Ich versuche Barplot zu erzeugen, wo die Farben der Bars nach vorgegebenen Werten aus vordefinierten Farben ausgewählt werden. Der Wert "pahse" bestimmt die Farbe. Es ist in 3 Bereiche unterteilt und Bereiche sind geordnet. Rang wird verwendet, um eine Farbe aus der Palette aufzurufen. Dieser Teil funktioniert gut. Aber ich bin mit colorbar geblieben. Colorbar sollte Farben basierend auf den Schlüsseln des Wörterbuchs "rank_classes" und tiks/labels basierend auf Werten enthalten, die für das Ranking verwendet wurden. Ich habe versucht, mpl.colarbar.ColorbarBase() von Matplotlib, aber es scheint nicht Seabahnen sns.cubehelix_palette() zu mögen. Ich frage mich, wie man diese beiden Dinge zusammenbringt oder einfachere Lösungen?Colorbar für Barplot, wenn Bar-Farben nach Rängen ausgewählt werden
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("white")
#%matplotlib inline
index = ['25', '26', '27']
count = [10, 50, 22]
phase = [0.9, 2.2, 1.2]
ranks = [0, 2, 1]
rank_classes = {0:"Ph<1", 1:"1<Ph<1.2", 2:"Ph>=1.2"}
d = {'count' : pd.Series(count, index=index),
'phase' : pd.Series(phase, index=index),
'rank' : pd.Series(ranks, index=index)
}
df = pd.DataFrame(d)
# barplot
fig, ax = plt.subplots()
pal = sns.cubehelix_palette(3)
x = df.index
y = list(df['count'])
z = list(df['rank'])
sns.barplot(x=x, y=y, palette=np.array(pal)[z])
sns.despine()
Wollen Sie dieses http://stackoverflow.com/questions/31313606/pyplot-matplotlib-bar-chart-with-fill-color-depending-on-value? – lanery
@lanerry Ich sehe, der Trick besteht darin, zwei Figuren übereinander zu zeichnen und vom Scatter-Plot nur colorbar anzuzeigen. In meinem Fall habe ich zwei Probleme mit der Anpassung von Code für meine Bedürfnisse. Zuerst möchte ich seaborn Farbschema mit vordefinierten Anzahl von Farben wie ** sns.cubehelix_palette (3) ** verwenden. Aber dieses Format ist nicht kompatibel mit cmap in plt.scatter(). Wie man es kompatibel macht? Zweitens, Wie vordefinierte Zeichenfolge Etiketten ("A", "B", "Z") für erste, zweite, etc ... Farben in ** sns.cubehelix_palette (3) ** mit ** plt.colobar zuweisen() **? – tonu