2016-07-07 19 views
8

Seaborn ma opcję tworzenia ładnych palet kolorów. Chcę używać tych palet do generowania kolorów, które dobrze współgrają na mapie, na której kraje są zacienione zgodnie z pewną właściwością. Poniższy kod tworzy 8 odcieni purpury od jasnego do ciemnego. Zauważ także możliwość określenia liczby kolorów, więc nie mogę po prostu użyć stałej palety zdefiniowanych kolorów.Wyciąg RGB lub 6-cyfrowy kod z palety Seaborn

import seaborn as sns 
num_shades = 8 
sns.palplot(sns.cubehelix_palette(num_shades)) 

Jeśli uruchomić to samo, ale na liście tak:

color_list = sns.cubehelix_palette(num_shades) 

otrzymasz:

[[0.9312692223325372, 0.8201921796082118, 0.7971480974663592], ... 

te wyraźnie nie są wartościami RGB, który jest to, czego potrzebuję.

1) W jakim formacie są te kolory? 2) Jak mogę przekonwertować na 6-cyfrowy kod RGB?

Próbowałem już odszukać trochę czasu i nie znalazłem odpowiedzi. Szukałem tu i na innych dokumentach Seaborn:

https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.set_color_codes.html

mogę przekonwertować do 6 kodów numerycznych z RGB przy użyciu:

Converting a RGB color tuple to a six digit code, in Python

ale jestem zatrzymany, jak to zrobić bezpośrednie lub poprzez uzyskanie wartości RGB. Każda pomoc będzie doceniona.

Odpowiedz

4

Wartości, które otrzymujesz, to wartości procentowe 255, maksymalna wartość RGB. Po prostu pomnóż każdą trójkę wartości przez 255 (i zaokrąglij, jeśli chcesz), aby uzyskać wartości RGB.

for color in color_list: 
    for value in color: 
     value *= 255 

Następnie zapisz te osoby na nowej liście, aby uzyskać listę wartości RGB.

+1

Jak mogłem przegapić! Wielkie dzięki. – Pete

14

Jeśli przez „6-cyfrowy kod” masz na myśli kod szesnastkowy, można również zrobić:

pal = sns.color_palette(...) 
pal.as_hex() 
+0

Działa! Zwraca listę ciągów z dodanym #. Zobacz: 'import seaborn; pal_hls = seaborn.hls_palette (12, l = .3, s = .8) .as_hex(); print (pal_hls); ' – Iacchus