Python 如何在Plotly条形图中设置带有星期几的彩色图例

Python 如何在Plotly条形图中设置带有星期几的彩色图例,python,pandas,plotly,Python,Pandas,Plotly,我有一个这样的图表: 我想有一个关于一周中每一天的传说,每一天都有自己的颜色 因此,图表中的每个条形图(代表一天)都有其各自的颜色与一周中的某一天相关联。 我希望我一直被忽视,非常感谢所有回复我的人。这里有一种方法可以做到这一点(使用随机数据): 输出为: 这里有一种方法可以做到这一点(使用随机数据): 输出为: @Roy2012答案是完美的,应该仍然是公认的答案。我只想添加一个plotly.express版本 将熊猫作为pd导入 将numpy作为np导入 将plotly.express导入为p

我有一个这样的图表: 我想有一个关于一周中每一天的传说,每一天都有自己的颜色 因此,图表中的每个条形图(代表一天)都有其各自的颜色与一周中的某一天相关联。 我希望我一直被忽视,非常感谢所有回复我的人。

这里有一种方法可以做到这一点(使用随机数据):

输出为:

这里有一种方法可以做到这一点(使用随机数据):

输出为:
@Roy2012答案是完美的,应该仍然是公认的答案。我只想添加一个plotly.express版本

将熊猫作为pd导入
将numpy作为np导入
将plotly.express导入为px
#生成虚拟数据
日期=pd.日期范围(“2020-01-01”、“2020-06-30”)
df=pd.DataFrame({“date”:dates,“val”:np.random.randint(01100,len(dates))})
df[“道”]=df[“日期”].dt.weekday\u名称
像素条(df,x=“date”,y=“val”,color=“dow”)

如果你想让你的传奇从周一延续到周日,你可以加上这两行

df[“道指”]=df[“日期”].dt.weekday
df=df.排序值(“道琼斯”).重置索引(drop=True)
df[“道”]=df[“日期”].dt.weekday\u名称
像素条(df,x=“date”,y=“val”,color=“dow”)

@Roy2012答案是完美的,应该仍然是公认的答案。我只想添加一个plotly.express版本

将熊猫作为pd导入
将numpy作为np导入
将plotly.express导入为px
#生成虚拟数据
日期=pd.日期范围(“2020-01-01”、“2020-06-30”)
df=pd.DataFrame({“date”:dates,“val”:np.random.randint(01100,len(dates))})
df[“道”]=df[“日期”].dt.weekday\u名称
像素条(df,x=“date”,y=“val”,color=“dow”)

如果你想让你的传奇从周一延续到周日,你可以加上这两行

df[“道指”]=df[“日期”].dt.weekday
df=df.排序值(“道琼斯”).重置索引(drop=True)
df[“道”]=df[“日期”].dt.weekday\u名称
像素条(df,x=“date”,y=“val”,color=“dow”)

能否提供源数据的样本?(作为问题中的文本)请提供源数据的样本?(作为问题中的文本)如果它回答了你的问题,如果你能为后代接受我的答案,那就太好了。回答得好。我投了更高的票。我刚刚在你的代码上导入了库。如果它回答了你的问题,如果你能为后代接受我的答案,那就太好了。回答得好。我投了更高的票。我刚刚在您的代码上导入了库。
import pandas as pd
import numpy as np
import plotly.graph_objects as go

# generate dummy data 
dates = pd.date_range("2020-01-01", "2020-06-30", freq="1d")
df = pd.DataFrame({"date": dates, "val": np.random.randint(0, 100, len(dates))})

# plot it. 
fig = go.Figure()
for day_of_week in range(7):
    sub_df = df[df.date.dt.dayofweek == day_of_week]
    day_name = sub_df.date.dt.day_name().iloc[0]
    fig.add_trace(go.Bar(
        x=sub_df.date,
        y=sub_df.val,
        name=day_name
    ))
    

fig.show()