如何根据 bin 的 x 值将颜色图应用于绘图直方图?

Posted

技术标签:

【中文标题】如何根据 bin 的 x 值将颜色图应用于绘图直方图?【英文标题】:How do I apply a color map to a plotly histogram based on a bin's x-values? 【发布时间】:2021-12-06 11:53:31 【问题描述】:

我想用 plotly 复制下面的 matplotlib 图,但是如何根据 x 值(日期)为直方图条着色?

【问题讨论】:

【参考方案1】: 假设您有一个包含 datecount 列的数据框 出于演示目的从随机正常字典构造了一个 创建一个附加列,对日期进行分类。用过颜色 那么使用 *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)

【讨论】:

这有效但不显示宽度的日期范围,因为它是一个条形图。可以添加这个功能吗?每个 pin 的日期范围很重要(例如 jan1-jan14、jan15-jan29 等) 别针是什么意思? a) 图例 b) 悬停文本 c) 区域框 无法编辑 cmets?那应该是bin。我找到了使用 customdata 属性的解决方法。标记为已解决,谢谢@Rob!

以上是关于如何根据 bin 的 x 值将颜色图应用于绘图直方图?的主要内容,如果未能解决你的问题,请参考以下文章

可视化实验九:利用Python绘制直方图饼图

R语言绘图——条形图/柱状图

如何连接条形图,就像 geom_density_ridges 对直方图所做的那样

直方图绘制

根据数据框中单元格中的值将颜色应用于单元格

如何在 matplotlib 中根据 x 轴更改直方图颜色