2016-03-28 21 views
6

Chciałbym użyć wykresu słupkowego seaborn dla moich danych ze skalą kolorów zgodnie z wartościami na osi Y. Na przykład, od tego obrazu, zmiany kolorów od lewej do prawej według palety kolorów:Zmiana skali kolorów na wykresie słupkowym seaborn

enter image description here

Ale co ja właściwie chciałem to ta sama kolorystyka, ale w „pionowe” zamiast „poziomej”. czy to możliwe? Szukałem i próbowałem ustawić parametr hue na osi Y, ale to nie działa, jak mogę to zrobić?

Z góry dziękuję.

+0

A więc ... chcesz, aby wszystkie paski miały niebiesko-czerwoną skalę kolorów, ale z tym, że mają kolor niebieski na górze i stopniowo zmieniają kolor na czerwony na dole? –

+1

Edytowałem pytanie, to nie jest schemat kolorów niebiesko-czerwony, ale jasnozielony do ciemnozielonego, jak na obrazie, który edytowałem. Na przykład pasek C miałby najciemniejszy kolor, a paski o niższych wartościach miałyby jaśniejszy kolor – MrPedru22

Odpowiedz

6

tu rozwiązania:

import numpy as np, matplotlib.pyplot as plt, seaborn as sns 
sns.set(style="whitegrid", color_codes=True) 

titanic = sns.load_dataset("titanic") 
data = titanic.groupby("deck").size() # data underlying bar plot in question 

pal = sns.color_palette("Greens_d", len(data)) 
rank = data.argsort().argsort() # http://stackoverflow.com/a/6266510/1628638 
sns.barplot(x=data.index, y=data, palette=np.array(pal[::-1])[rank]) 

plt.show() 

Na wyjściu: bar plot

Uwaga: kod aktualnie nadaje różne (przylegające) kolorów barów z identycznej wysokości. (Nie jest to problem na wykresie próbki.) Chociaż lepiej byłoby użyć tego samego koloru dla pasków o identycznej wysokości, wynikowy kod najprawdopodobniej uczyniłby podstawowy pomysł mniej jasnym.

Powiązane problemy