python - examples - imshow colorbar
matplotlib colorbar para scatter (2)
De los documentos de matplotlib en scatter 1 :
cmap solo se usa si c es una matriz de flotadores
Por lo tanto, la lista de colores debe ser una lista de flotantes en lugar de una lista de tuplas como la tiene ahora. plt.colorbar () quiere un objeto mappable, como CircleCollection que devuelve plt.scatter (). vmin y vmax pueden controlar los límites de tu barra de color. Las cosas que están fuera de vmin / vmax obtienen los colores de los puntos finales.
¿Cómo funciona esto para ti?
import matplotlib.pyplot as plt
cm = plt.cm.get_cmap(''RdYlBu'')
xy = range(20)
z = xy
sc = plt.scatter(xy, xy, c=z, vmin=0, vmax=20, s=35, cmap=cm)
plt.colorbar(sc)
plt.show()
Estoy trabajando con datos que tienen los datos tienen 3 parámetros de trazado: x, y, c. ¿Cómo se crea un valor de color personalizado para un diagrama de dispersión?
Extendiendo este example 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
Si busca dispersar por dos variables y colorear por el tercero, Altair puede ser una gran 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''])
Trama Altair
from altair import *
Chart(df).mark_circle().encode(x=''A'',y=''B'', color=''C'').configure_cell(width=200, height=150)