为 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