为 plotly 中的特定数据定义颜色 python
Define Color for specific data in plotly python
我实现了一个时间轴来显示我的数据。
要创建我使用的时间轴:
fig = px.timeline(df
, x_start="Start"
, x_end="End"
, y="Name"
, hover_name="Task"
, opacity=0.8
, template='plotly_white'
, height=len(df)*35
, width=1150
, color="Type"
, category_orders=dict(
Name=df["Name"].drop_duplicates().tolist()
)
)
您可以看到颜色是基于“类型”的。
在我的数据框中,我有两种类型的数据:Releases 和 Epics。
颜色如下所示:
这里的问题是颜色是随机生成的。
但是,我想这样定义颜色:
colors = {'Release':'rgb(255,239,0)', 'Epic':'rgb(148, 76, 228)'}
fig.update(color=colors)
有办法吗?
- 已经模拟了一些数据以适合您的代码
- 评论了高度和宽度,使其适合我的屏幕
- 这是一个使用color_discrete_map
的简单案例
import pandas as pd
import numpy as np
import plotly.express as px
n = 8
df = pd.DataFrame(
{
"Start": pd.date_range("1-jan-2021", freq="1M", periods=n),
"End": pd.date_range("1-mar-2021", freq="1M", periods=n),
"Name": [str(i) for i in range(n)],
"Task": np.random.choice(list("ABCDE"), n),
"Type": np.random.choice(["Epic", "Release"], n),
}
)
fig = px.timeline(
df,
x_start="Start",
x_end="End",
y="Name",
hover_name="Task",
opacity=0.8,
template="plotly_white",
# height=len(df) * 35,
# width=1150,
color="Type",
category_orders=dict(Name=df["Name"].drop_duplicates().tolist()),
color_discrete_map={"Release": "rgb(255,239,0)", "Epic": "rgb(148, 76, 228)"},
)
fig
我实现了一个时间轴来显示我的数据。 要创建我使用的时间轴:
fig = px.timeline(df
, x_start="Start"
, x_end="End"
, y="Name"
, hover_name="Task"
, opacity=0.8
, template='plotly_white'
, height=len(df)*35
, width=1150
, color="Type"
, category_orders=dict(
Name=df["Name"].drop_duplicates().tolist()
)
)
您可以看到颜色是基于“类型”的。 在我的数据框中,我有两种类型的数据:Releases 和 Epics。 颜色如下所示:
这里的问题是颜色是随机生成的。 但是,我想这样定义颜色:
colors = {'Release':'rgb(255,239,0)', 'Epic':'rgb(148, 76, 228)'}
fig.update(color=colors)
有办法吗?
- 已经模拟了一些数据以适合您的代码
- 评论了高度和宽度,使其适合我的屏幕
- 这是一个使用color_discrete_map 的简单案例
import pandas as pd
import numpy as np
import plotly.express as px
n = 8
df = pd.DataFrame(
{
"Start": pd.date_range("1-jan-2021", freq="1M", periods=n),
"End": pd.date_range("1-mar-2021", freq="1M", periods=n),
"Name": [str(i) for i in range(n)],
"Task": np.random.choice(list("ABCDE"), n),
"Type": np.random.choice(["Epic", "Release"], n),
}
)
fig = px.timeline(
df,
x_start="Start",
x_end="End",
y="Name",
hover_name="Task",
opacity=0.8,
template="plotly_white",
# height=len(df) * 35,
# width=1150,
color="Type",
category_orders=dict(Name=df["Name"].drop_duplicates().tolist()),
color_discrete_map={"Release": "rgb(255,239,0)", "Epic": "rgb(148, 76, 228)"},
)
fig