2017-07-07 3 views
2

J'ai créé un diagramme de dispersion sur une carte de base des États-Unis en utilisant pyplot.scatter dans lequel les segments de la barre de couleur sont régulièrement espacés sur la plage des données d'entrée. Cependant, je voudrais contrôler explicitement les cases de la barre de couleur afin de créer des cases inégales, par ex. [-20, -10, -5,-4,-3,-2,-1,0,1,2,3,4,5,50] au lieu de bacs espacés uniformément entre -20 et 50. Comment cela peut-il être fait?Définition explicite de bacs de barres de couleurs dans plt.scatter

+0

Vous voulez dire créer des bacs inégaux de colorbars discrets? Ou simplement définir vos propres ticks à ces valeurs dans la liste? –

+0

Définir mes propres ticks sur les valeurs de cette liste pour avoir des ticks non réguliers. comme dans cette intrigue: https://www.nature.com/article-assets/npg/ngeo/journal/v9/n7/carousel/ngeo2721-f4.jpg – jimutters

Répondre

1

Pour définir vos propres tiques dans un colorbar en plt.scatter vous pouvez modifier le paramètre ticks dans fig.colorbar à ce que la liste des valeurs que vous désirez:

import matplotlib.pyplot as plt 
fig, ax = plt.subplots() 
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) 

cbar = fig.colorbar(sc, ticks=[0, 1, 15]) 
plt.show() 

+0

merci pour cela, mais je suppose que ma réponse originale à votre question était faux. Je voudrais créer des corbeilles qui représentent des plages de nombres de tailles différentes, mais qui sont espacées uniformément dans la barre de couleurs. comme ceci: https://www.nature.com/article-assets/npg/ngeo/journal/v9/n7/carousel/ngeo2721-f4.jpg – jimutters

+0

@jimutters Oh, d'accord, mais je pense que ma solution peut résoudre ça , n'est-ce pas? Je veux dire, vous auriez juste à définir les valeurs dans une barre de couleurs discrète, ou sont ces chiffres dans la colobar "fictif" et ne représentent pas les vraies valeurs étant assignées? –

+0

Pour obtenir une palette de couleurs discrète, il suffit de remplacer la 3ème ligne de code par 'cm = plt.cm.get_cmap ('RdYlBu', 10)' par exemple, l'affectation de tick fonctionne toujours. –