繁体   English   中英

Plotly:如何增加 colors 的数量以确保所有线路的唯一 colors?

[英]Plotly: How to increase the number of colors to assure unique colors for all lines?

我想 plot 一条简单的线 plot 但如果我有超过 10 个变量,plolty 使用相同的颜色两次,我怎样才能避免它并且总是为新变量使用新颜色?

import pandas as pd
import numpy as np
pd.set_option("plotting.backend", "plotly")

df=pd.DataFrame(np.random.rand(100, 12)).cumsum()
df.plot()

Output:

在此处输入图像描述

您可以使用关键字colorsdf.plot(colors=my_list)传递 colors 的列表。

如果您的列表中的 colors 与您的 DataFrame 列一样多,则不会重复 colors。

这是一个例子:

import pandas as pd
import numpy as np
import colorcet as cc

pd.set_option("plotting.backend", "matplotlib")
df=pd.DataFrame(np.random.rand(100, 12)).cumsum()
df.plot(color=cc.b_rainbow_bgyrm_35_85_c71[::15][:df.shape[0]])

Output

使用 12 种颜色

实际上它记录在这里https://plotly.com/python/discrete-color/ 您正在使用plotly express的接口

下面的代码使用一组不同的 colors。

import pandas as pd
import numpy as np
pd.set_option("plotting.backend", "plotly")

df=pd.DataFrame(np.random.rand(100, 12)).cumsum()
color_seq = ['#AA0DFE',
 '#3283FE',
 '#85660D',
 '#782AB6',
 '#565656',
 '#1C8356',
 '#16FF32',
 '#F7E1A0',
 '#E2E2E2',
 '#1CBE4F',
 '#C4451C',
 '#DEA0FD',
 '#FE00FA',
 '#325A9B',
 '#FEAF16',
 '#F8A19F',
 '#90AD1C',
 '#F6222E',
 '#1CFFCE',
 '#2ED9FF',
 '#B10DA1',
 '#C075A6',
 '#FC1CBF',
 '#B00068',
 '#FBE426',
 '#FA0087']

df.plot(color_discrete_sequence=color_seq)


如果您想针对任意数量的轨迹动态执行此操作,您可以使用px.colors.sample_colorscale()连续的 plotly 色标进行采样,如下所示:

colors = px.colors.sample_colorscale("viridis", [n/(n_colors -1) for n in range(n_colors)])
df.plot(color_discrete_sequence=colors)

Plot 1 - 12 迹线

在此处输入图像描述

Plot 2 - 50 迹线

在此处输入图像描述

完整代码:

import pandas as pd
import numpy as np
import plotly.express as px
pd.set_option("plotting.backend", "plotly")

# data
df=pd.DataFrame(np.random.uniform(low=-2, high=2, size=(100,12))).cumsum()

# colors
n_colors = len(df.columns)
colors = px.colors.sample_colorscale("viridis", [n/(n_colors -1) for n in range(n_colors)])

# plot
df.plot(color_discrete_sequence=colors)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM