Je travaille avec des données dont les données ont 3 paramètres de traçage: x, y, c. Comment créer une valeur de couleur personnalisée pour un nuage de points?
Prolonger cet exemple que j'essaye de faire:
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()
mais le résultat est TypeError: You must first set_array for mappable
la source
'AxesSubplot' object has no attribute 'colorbar'
. J'ai faitax.colorbar()
... qu'est-ce que je fais de mal?Voici la façon OOP d'ajouter une barre de couleurs:
la source
plt
pour tracer la barre de couleurs n'est pas une méthode recommandée, je pense. Le vôtre est une manière recommandée.Si vous cherchez à disperser par deux variables et la couleur par la troisième, Altair peut être un excellent choix.
Création du jeu de données
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'])
Parcelle Altair
from altair import * Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)
Terrain
la source