我有一个100个字符串的列表,我想将它们转换为colorlover颜色列表,以便能够在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
...
colorlover scale [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个列类别(字符串),我需要与颜色相关联。然后我不能像示例中那样手动添加颜色。
看起来colorlover
实际上是一个python库。它执行字符串转换,您不需要为此创建单独的逻辑。
这是documentation的链接,这里是一个链接,显示用于生成色标的strings的示例。
UPDATE
如果你想定义自己的颜色,this可能是一个很好的起点。其他人可能有更多的经验。
更新2
如果您需要生成许多颜色,请查看link,它将引导您在Python和Plotly中为变量设置颜色标记。 Scatter Plots部分的色阶可能是一个很好的起点。
我设法使用以下代码生成一个大的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
的整个色谱。
祝你的项目好运。