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

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

【问题讨论】:

    标签: python plotly plotly-python plotly-express


    【解决方案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!
    猜你喜欢
    • 2020-09-07
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多