python 3.5 matplotlib等高线图传奇

时间:2016-04-02 04:00:01

标签: python matplotlib plot legend contour

尝试在我的轮廓图中添加图例:

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

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()

图例的图例标签是正确的,但为什么相关的颜色都被涂抹并且不合适?

2 个答案:

答案 0 :(得分:2)

它将等高线图的字面多边形作为标记。这是一个问题。

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

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()

,结果如下:

Manually building the color legend of contourf

答案 1 :(得分:2)

感谢。
另外,发现一个稍微容易一点: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')

结果如下: