如何根据 bin 的 x 值将颜色图应用于绘图直方图?
How do I apply a color map to a plotly histogram based on a bin's x-values?
我想用 plotly 复制下面的 matplotlib 图,但是如何根据 x 值(日期)为直方图条着色?
- 假设您有一个包含 date 和 count 列的数据框
- 出于演示目的,已从随机普通字典构造了一个
- 创建一个额外的列来对日期进行分类。使用过颜色
- 那么使用*Plotly Express生成你想要的图形就很简单了
import numpy as np
import pandas as pd
import plotly.express as px
# fmt: off
df = pd.DataFrame({"date": pd.date_range("23-jan-2022", "1-apr-2027", freq="M")})
df["count"] = pd.value_counts(pd.cut(np.sort(np.random.normal(0, 0.1, 2000)), bins=len(df)), sort=False).values
df["color"] = np.select(
[df["date"].lt("1-jan-24"), df["date"].lt("1-jan-25"), df["date"].lt("1-oct-25")],
["blue", "yellow", "orange"],
"red",
)
# fmt: on
px.bar(
df,
x="date",
y="count",
color="color",
color_discrete_map={
"blue": "blue",
"yellow": "yellow",
"orange": "orange",
"red": "red",
},
).update_layout(xaxis={"dtick": "M1"}, showlegend=False)
我想用 plotly 复制下面的 matplotlib 图,但是如何根据 x 值(日期)为直方图条着色?
- 假设您有一个包含 date 和 count 列的数据框
- 出于演示目的,已从随机普通字典构造了一个
- 创建一个额外的列来对日期进行分类。使用过颜色
- 那么使用*Plotly Express生成你想要的图形就很简单了
import numpy as np
import pandas as pd
import plotly.express as px
# fmt: off
df = pd.DataFrame({"date": pd.date_range("23-jan-2022", "1-apr-2027", freq="M")})
df["count"] = pd.value_counts(pd.cut(np.sort(np.random.normal(0, 0.1, 2000)), bins=len(df)), sort=False).values
df["color"] = np.select(
[df["date"].lt("1-jan-24"), df["date"].lt("1-jan-25"), df["date"].lt("1-oct-25")],
["blue", "yellow", "orange"],
"red",
)
# fmt: on
px.bar(
df,
x="date",
y="count",
color="color",
color_discrete_map={
"blue": "blue",
"yellow": "yellow",
"orange": "orange",
"red": "red",
},
).update_layout(xaxis={"dtick": "M1"}, showlegend=False)