Matplotlib plt.text()无法遍历循环

时间:2020-04-04 04:50:41

标签: python matplotlib

在遍历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()

1 个答案:

答案 0 :(得分:1)

默认情况下,plt.text使用数据坐标,并且matplotlib不会自动调整限制以包括不在数据限制内的文本。因此,除非(0.5, 0.5)在调用plt.text的范围内,否则它将不可见。在这种情况下,您可以使用轴坐标解决问题。这可以通过向transform关键字(即

)提供轴变换来完成。
plt.text(0.5, 0.5, equation, transform = plt.gca().transAxes)

Text实例放置在当前轴的中心。