список строк в список цветов - PullRequest
0 голосов
/ 13 марта 2019

У меня есть список из 100 строк, и я хотел бы преобразовать их в список цветов, чтобы использовать их в plot.py.Я пробовал несколько вариантов, но это всегда дает мне разные цвета для одной и той же строки.Функция должна работать так:

hash(string) - > colorlover

Любые идеи.?

Вот список строк:

XIC-FWHM-Q1
XIC-FWHM-Q2 
XIC-FWHM-Q3 
XIC-Height-Q2   
XIC-Height-Q3   
RT-Duration 
RT-TIC-Q1 

...

шкала цветового выделения [RdYlBu] была бы хороша.

ryb = cl.scales['3']['div']['RdYlBu']; ryb
['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,191,219)']

Я хочу провести анализ PCA, подобный этому https://plot.ly/ipython-notebooks/principal-component-analysis/ Но у меня есть 100 столбцов с категорией классов (Strings), которые мне нужно связать с цветами.Тогда я не могу добавить цвета вручную, как в примере.

1 Ответ

0 голосов
/ 13 марта 2019

Похоже, colorlover на самом деле библиотека Python. Он выполняет преобразование строк, и вам не нужно создавать отдельную логику для этого.

Вот ссылка на документацию , а также ссылка, показывающая примеры строк , используемых для генерации цветовых шкал.

UPDATE

Если вы хотите определить свои собственные цвета, эта может быть хорошей отправной точкой. Другие могут иметь больше опыта в этом.

ОБНОВЛЕНИЕ 2

Если вам нужно сгенерировать много цветов, проверьте ссылку , которая проведет вас через настройку цветовых шкал для ваших переменных в Python и Plotly. Хорошей отправной точкой может быть цветовая шкала для графиков рассеяния .

Мне удалось создать большой список значений rgb, используя следующий код:

import colorlover as cl
import pprint

pprint.pprint(cl.scales["3"])

Это привело к следующему списку, из которого вы можете выбрать значения rgb, которые вы хотите использовать:

{'div': {'BrBG': ['rgb(216,179,101)', 'rgb(245,245,245)', 'rgb(90,180,172)'],
         'PRGn': ['rgb(175,141,195)', 'rgb(247,247,247)', 'rgb(127,191,123)'],
         'PiYG': ['rgb(233,163,201)', 'rgb(247,247,247)', 'rgb(161,215,106)'],
         'PuOr': ['rgb(241,163,64)', 'rgb(247,247,247)', 'rgb(153,142,195)'],
         'RdBu': ['rgb(239,138,98)', 'rgb(247,247,247)', 'rgb(103,169,207)'],
         'RdGy': ['rgb(239,138,98)', 'rgb(255,255,255)', 'rgb(153,153,153)'],
         'RdYlBu': ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,191,219)'],
         'RdYlGn': ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,207,96)'],
         'Spectral': ['rgb(252,141,89)',
                      'rgb(255,255,191)',
                      'rgb(153,213,148)']},
 'qual': {'Accent': ['rgb(127,201,127)',
                     'rgb(190,174,212)',
                     'rgb(253,192,134)'],
          'Dark2': ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)'],
          'Paired': ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)'],
          'Pastel1': ['rgb(251,180,174)',
                      'rgb(179,205,227)',
                      'rgb(204,235,197)'],
          'Pastel2': ['rgb(179,226,205)',
                      'rgb(253,205,172)',
                      'rgb(203,213,232)'],
          'Set1': ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)'],
          'Set2': ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)'],
          'Set3': ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)']},
 'seq': {'Blues': ['rgb(222,235,247)', 'rgb(158,202,225)', 'rgb(49,130,189)'],
         'BuGn': ['rgb(229,245,249)', 'rgb(153,216,201)', 'rgb(44,162,95)'],
         'BuPu': ['rgb(224,236,244)', 'rgb(158,188,218)', 'rgb(136,86,167)'],
         'GnBu': ['rgb(224,243,219)', 'rgb(168,221,181)', 'rgb(67,162,202)'],
         'Greens': ['rgb(229,245,224)', 'rgb(161,217,155)', 'rgb(49,163,84)'],
         'Greys': ['rgb(240,240,240)', 'rgb(189,189,189)', 'rgb(99,99,99)'],
         'OrRd': ['rgb(254,232,200)', 'rgb(253,187,132)', 'rgb(227,74,51)'],
         'Oranges': ['rgb(254,230,206)', 'rgb(253,174,107)', 'rgb(230,85,13)'],
         'PuBu': ['rgb(236,231,242)', 'rgb(166,189,219)', 'rgb(43,140,190)'],
         'PuBuGn': ['rgb(236,226,240)', 'rgb(166,189,219)', 'rgb(28,144,153)'],
         'PuRd': ['rgb(231,225,239)', 'rgb(201,148,199)', 'rgb(221,28,119)'],
         'Purples': ['rgb(239,237,245)',
                     'rgb(188,189,220)',
                     'rgb(117,107,177)'],
         'RdPu': ['rgb(253,224,221)', 'rgb(250,159,181)', 'rgb(197,27,138)'],
         'Reds': ['rgb(254,224,210)', 'rgb(252,146,114)', 'rgb(222,45,38)'],
         'YlGn': ['rgb(247,252,185)', 'rgb(173,221,142)', 'rgb(49,163,84)'],
         'YlGnBu': ['rgb(237,248,177)', 'rgb(127,205,187)', 'rgb(44,127,184)'],
         'YlOrBr': ['rgb(255,247,188)', 'rgb(254,196,79)', 'rgb(217,95,14)'],
         'YlOrRd': ['rgb(255,237,160)', 'rgb(254,178,76)', 'rgb(240,59,32)']}}

Если вы просто хотите генерировать цвета в спектре RdYlBu, используйте следующий код:

print(cl.scales["11"]["div"]["RdYlBu"])

это дает:

    ['rgb(165,0,38)',
 'rgb(215,48,39)',
 'rgb(244,109,67)',
 'rgb(253,174,97)',
 'rgb(254,224,144)',
 'rgb(255,255,191)',
 'rgb(224,243,248)',
 'rgb(171,217,233)',
 'rgb(116,173,209)',
 'rgb(69,117,180)',
 'rgb(49,54,149)']

Единственная проблема, которую я обнаружил, состояла в том, что наибольшее число, которое я мог использовать, было 11, и получило сообщение об ошибке для любого значения выше этого. Я предполагаю, что это весь спектр цветов для RdYlBu.

Удачи в вашем проекте.

...