Tracer l'histogramme avec des couleurs de la palette
Je veux tracer un simple histogramme 1D où les barres doivent suivre le code couleur d'une palette de couleurs.
Voici un MWE
:
import numpy as n
import matplotlib.pyplot as plt
# Random gaussian data.
Ntotal = 1000
data = 0.05 * n.random.randn(Ntotal) + 0.5
# This is the colormap I'd like to use.
cm = plt.cm.get_cmap('RdYlBu_r')
# Plot histogram.
n, bins, patches = plt.hist(data, 25, normed=1, color='green')
plt.show()
qui sort ce:
Au lieu de la couleur green
pour l'ensemble de l'histogramme, j'aimerais les colonnes de suivre un code couleur donnée par la palette de couleurs définies dans cm
et les valeurs de la bins
. Cela signifierait que des bacs plus proche de zéro (pas de la hauteur, mais en position) devrait ressembler plus bleu et les plus proches l'un rouge, selon la palette de couleurs choisie RdYlBu_r
.
Depuis plt.histo
ne pas prendre un cmap
argument je ne sais pas comment le dire à utiliser la palette de couleurs définies dans cm
.
Vous devez vous connecter pour publier un commentaire.
La
hist
commande renvoie une liste de patchs, de sorte que vous pouvez parcourir et leur couleur comme suit:Pour obtenir les couleurs, vous avez besoin de appel de la palette de couleurs avec une valeur comprise entre 0 et 1. Résultat:
setp
contrebar
. Chacun a ses avantages, la cartographie de la barre de couleur peut facilement être modifié dans cette réponse d'obtenir celui que vous recherchez.Une approche alternative est d'utiliser
plt.bar
qui prend une liste de couleurs. Pour déterminer la largeur et la hauteur, vous pouvez utilisernumpy.histogramme
. Votre palette de couleur peut être utilisé par trouver la gamme des valeurs de x et de mise à l'échelle de 0 à 1.Alors que ce n'est pas ce que vous avez demandé, si quelqu'un trébuche à travers ce (comme je l'ai fait) à la recherche de la façon de faire de la coloration à la hauteur de l'bacs au lieu de la commande, le code suivant basé sur des Bas la réponse devrait fonctionner:
J'aime les Bas Swinckels réponse, mais étant donné que la palette cm prendre comme paramètre une valeur entre 0 et 1, la simplification de l'algorithme serait comme cette