Как установить цветную легенду с днями недели на гистограмме Plotly - PullRequest
1 голос
/ 11 июля 2020
• 1000 (которые представляют один день) имеют соответствующий цвет, связанный с днем ​​недели. Надеюсь, я был непонятлив, большое спасибо всем, кто ответит.

Ответы [ 2 ]

3 голосов
/ 11 июля 2020

Вот способ сделать это (со случайными данными):

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()

Результат: введите описание изображения здесь

2 голосов
/ 12 июля 2020

@ Roy2012 ответ идеален и должен оставаться принятым. Я просто хотел бы добавить plotly.express версию

import pandas as pd
import numpy as np
import plotly.express as px

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

df["dow"] = df["date"].dt.weekday_name

px.bar(df, x="date", y="val", color="dow")

enter image description here

And in case you want your legend go from Monday to Sunday you could add these 2 lines

df["dow"] = df["date"].dt.weekday
df = df.sort_values("dow").reset_index(drop=True)

df["dow"] = df["date"].dt.weekday_name
px.bar(df, x="date", y="val", color="dow")

введите описание изображения здесь

...