Python 3.5 matplotlib leyenda de la gráfica de contorno

2

Intentando agregar una leyenda a mi gráfico de contorno:

Aquí está la parte del código relevante con la que tengo problemas:

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

Las etiquetas de leyenda de la leyenda son correctas, pero ¿por qué los colores pertinentes están todos manchados y fuera de lugar?

3

Gracias.
Además, encontré uno un poco más fácil: ver resultado

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

aquí está el resultado:

2

Es poner los polígonos literales de su gráfico de contorno como si fueran marcadores. Es un problema.

Le aconsejo que cree un reemplazo manual para la leyenda de color. Aquí está la modificación que necesita hacer en su código (datos sintéticos generados):

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

, el resultado es este:

Construyendo manualmente la leyenda de color de contourf