Estoy trabajando con datos que tienen 3 parámetros de trazado: x, y, c. ¿Cómo se crea un valor de color personalizado para un diagrama de dispersión?
Ampliando este ejemplo que estoy tratando de hacer:
import matplotlib
import matplotlib.pyplot as plt
cm = matplotlib.cm.get_cmap('RdYlBu')
colors=[cm(1.*i/20) for i in range(20)]
xy = range(20)
plt.subplot(111)
colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship
plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20)
plt.colorbar()
plt.show()
pero el resultado es TypeError: You must first set_array for mappable
python
colors
matplotlib
Adam Greenhall
fuente
fuente
'AxesSubplot' object has no attribute 'colorbar'
. He hechoax.colorbar()
... ¿qué estoy haciendo mal?Aquí está la forma OOP de agregar una barra de colores:
fuente
plt
Creo que la respuesta correcta, usar directamente para trazar la barra de colores no es una forma recomendada. La suya es una forma recomendada.Si está buscando dispersar por dos variables y colorear por la tercera, Altair puede ser una excelente opción.
Creando el conjunto de datos
import matplotlib.pyplot as plt import numpy as np import pandas as pd df = pd.DataFrame(40*np.random.randn(10, 3), columns=['A', 'B','C'])
Parcela de Altair
from altair import * Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)
Trama
fuente