python 3.5 matplotlib等高线图图例

python 3.5 matplotlib contour plot legend

尝试为我的等高线图添加图例:

这是我遇到问题的相关代码部分:

plt.figure()
CS = plt.contourf(gg, cc, zz_miss)
CS.clabel()
lbl = CS.cl_cvalues
plt.xlabel('gamma')
plt.ylabel('C = 1 / lambda')
plt.legend((lbl), loc= 'upper right')

plt.show()

图例的图例标签是正确的,但为什么相关的颜色都被涂抹和错位了?

它将等高线图的文字多边形作为标记放置。有问题。

我建议您手动创建颜色图例的替换。这是您需要对代码(生成的合成数据)进行的修改:

import matplotlib.pyplot as plt

plt.figure()
xx,yy = np.meshgrid(range(100),range(100))
gg = np.sqrt(xx*2+yy*2)
CS = plt.contourf(gg) #, cc, zz_miss)
proxy = [plt.Rectangle((0,0),1,1,fc = pc.get_facecolor()[0]) for pc in CS.collections]

plt.legend(proxy, [str(i) for i in range(8)])
plt.xlabel('gamma')
plt.ylabel('C = 1 / lambda')

plt.show()

,结果是这样的:

谢谢。
另外,找到了一个稍微简单一点的:see result

CS = plt.contourf(gg, cc, zz_miss, alpha= 1)
nm, lbl = CS.legend_elements()
plt.legend(nm, lbl, title= 'MyTitle', fontsize= 8) 
plt.xlabel('gamma')
plt.ylabel('C = 1 / lambda')

结果如下: