在遍历matplotlib上的方程式时,我仅从plt.text()
获得了最后的文本。如何遍历matplotlib图形并为每个图注释方程式?此外,plt.savefig()
函数不会保存图形。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from scipy.stats import pearsonr
df=pd.read_csv(r'C:\GISN21\Ex_04\data5\data3_4.txt',sep="\t",header=0)
df2=df.loc[:, df.columns != 'Station']
def calculate_pvalues(df):
df = df.dropna()._get_numeric_data()
dfcols = pd.DataFrame(columns=df.columns)
pvalues = dfcols.transpose().join(dfcols, how='outer')
for r in df.columns:
for c in df.columns:
pvalues[r][c] = round(pearsonr(df[r], df[c])[1], 8)
if pvalues[r][c] < 0.05:
i=0
if r != c:
#best fit line
(m,b)=np.polyfit(df[r] ,df[c] ,1)
equation = 'y = ' + str(round(m,4)) + 'x' ' + ' + str(round(b,4))
f = plt.figure()
plt.text(0.5,0.5, equation)
plt.savefig("correlation{i}.png".format(i=i))
ax = f.add_subplot(1,1,1)
p = sns.regplot(x=df[r],y=df[c],data=df,ax=ax)
return pvalues
sns.pairplot(df,kind='scatter')
plt.savefig('correlation.png')
plt.show()
答案 0 :(得分:1)
默认情况下,plt.text
使用数据坐标,并且matplotlib不会自动调整限制以包括不在数据限制内的文本。因此,除非(0.5, 0.5)
在调用plt.text
的范围内,否则它将不可见。在这种情况下,您可以使用轴坐标解决问题。这可以通过向transform
关键字(即
plt.text(0.5, 0.5, equation, transform = plt.gca().transAxes)
将Text
实例放置在当前轴的中心。