字符串列表到colorlover列表

时间:2019-03-13 15:36:32

标签: python matplotlib plotly pca

我有一个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比例尺[RdYlBu]会很好。

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

我想像这样https://plot.ly/ipython-notebooks/principal-component-analysis/进行PCA分析,但是我有100列具有类别类别(字符串)的列,需要将它们与颜色相关联。然后,我无法像示例中那样手动添加颜色。

1 个答案:

答案 0 :(得分:0)

看起来import实际上是一个python库。它执行字符串转换,您无需为此创建单独的逻辑。

这里是指向documentation的链接,而这里是显示用于生成色标的strings的示例的链接。

更新

如果您想定义自己的颜色,this可能是一个很好的起点。其他人可能对此有更多经验。

更新2

如果需要生成多种颜色,请选中link,它会逐步引导您在Python和Plotly中为变量设置色阶。 散点图的色标部分可能是一个很好的起点。

我设法使用以下代码生成了大量的rgb值:

colorlover

这将产生以下列表,您可以从中选择要使用的rgb值:

import colorlover as cl
import pprint

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

如果您只想生成{'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"])

我发现的唯一问题是,我可以使用的最高数字是11,并且高于该数值时都会出现错误消息。我猜这是 ['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)'] 的整个色谱图。

祝你项目顺利。