在python中为多个图包含唯一的最佳拟合线和r2值

时间:2017-04-26 14:34:33

标签: python pandas matplotlib statistics

我有一个带有多个散点图的图形,当我尝试包含一条最佳拟合线时,它为每个图形提供了相同的线条。这就是现在的样子:

enter image description here

但我希望该线对每个图中的数据点都是唯一的。

这是我到目前为止的代码。我不会包含输入数据的代码,因为它很多,而且我很确定问题是在for循环中。

db.general.find({'animals.$.animal_rules' : { $elemMatch : {"type":"any_rule2"}}})

编辑问题:

如何打印最适合的线条的r2值?到目前为止,我有:

import pandas as pd
import matplotlib.pyplot as plt
for i in range(len(uniq)):
    plt.subplot(6,6,i+1)
    indx = dat['year'] == uniq[i]
    plt.scatter(x[indx], y[indx], s=15, color=scalarMap.to_rgba(i), label=uniq[i])
    m, b = np.polyfit(x, y, 1)
    plt.plot(x, m*x + b, '-')

如果我可以在最佳拟合线旁边打印r2值,那也很棒。

2 个答案:

答案 0 :(得分:1)

对于新的编辑,要注释绘图,只需使用matplotlib的{​​{3}}:

plt.annotate('Corr. coef = %.3f' % r_value**2, (0.8, 0.2), xycoords='axes fraction', ha='center', va='center', size=10)

annotate

答案 1 :(得分:0)

@gereleth解决问题

for i in range(len(uniq)):
    plt.subplot(6,6,i+1)
    indx = dat['year'] == uniq[i]
    plt.scatter(x[indx], y[indx], s=15, color=scalarMap.to_rgba(i), label=uniq[i])
    plt.legend(prop={'size':5})
    plt.xticks(size = 10)
    plt.yticks(size = 10)
    m, b = np.polyfit(x[indx], y[indx], 1)
    plt.plot(x, m*x + b, '-')

enter image description here