簡體   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