我正在使用 pylab 生成此图像:
传说不是我想要的。点代表实际数据点,线条由 polyfit 制成。我希望图例包含十个条目,其中每种颜色的线和点合并在一起,或者仅包含十个点线。
相关的一段代码:
for i in range(start, start + size*chunks):
colorVal = scalarMap.to_rgba(values[i])
slc1, slc2 = start + i*size, start + (i+1)*size
mylegend.append(" = ".join([self.dtypes[v1],
"%.2f" %data[v1, slc1]]))
jx = data[x, slc1:slc2]
jy = data[y, slc1:slc2]
p = np.polyfit(jx, jy, deg = 2)
lx = np.linspace(jx[0], jx[-1], 1000)
ly = p[0]*lx**2 + p[1]*lx + p[2]
pl.plot(jx, jy, "o", color = colorVal)
pl.plot(lx, ly, color = colorVal)
pl.xlabel(self.dtypes[x])
pl.ylabel(self.dtypes[y])
pl.title(title)
pl.axis(axis)
pl.legend(my_legend, loc = "upper left", shadow = True)
pl.grid("on")
pl.show()
我意识到错误是什么:我在 my_legend 列表中添加了 10 个点,然后 pylab 的图例函数正在读取它,直到列表结束。因此,只有一半的人成功了。但是,我不知道如何解决它。有没有一种方法可以使图例函数只为循环的每次迭代注册一个条目?
另外,我想以相反的顺序列出要点。我试过
pl.legend(my_legend[::-1])
但这没有用。
对这两个问题有什么想法吗?