【问题标题】:Facets not working properly plotly express刻面无法正常工作的情节表达
【发布时间】:2021-12-27 13:43:37
【问题描述】:
import plotly.graph_objects as go
import plotly.express as px

fig = px.histogram(df, nbins = 5, x = "numerical_col", color = "cat_1", animation_frame="date",
                  range_x=["10000","500000"], facet_col="cat_2")

fig.update_layout(
    margin=dict(l=25, r=25, t=20, b=20))

fig.show()

如何修复输出?我想要基于色调为 cat_1 的 cat_2 的多个子图。

【问题讨论】:

    标签: python-3.x plotly


    【解决方案1】:
    • 您没有提供示例数据,所以我根据您用于生成图的代码进行了模拟
    • 我遇到了一个问题 range_x 不起作用,它也会影响 y 轴。否则方法完全有效。
    import plotly.graph_objects as go
    import plotly.express as px
    import numpy as np
    import pandas as pd
    
    # data not provided.... simulate some
    DAYS = 5
    ROWS = DAYS * 2000
    df = pd.DataFrame(
        {
            "date_d": np.repeat(pd.date_range("1-Jan-2021", periods=DAYS), ROWS // DAYS),
            "numerical_col": np.random.uniform(10000, 500000, ROWS),
            "cat_1": np.random.choice(list("ABCD"), ROWS),
            "cat_2": np.random.choice(list("UVWXYZ"), ROWS),
        }
    )
    # animation frame has to be a string not a date...
    df["date"] = df["date_d"].dt.strftime("%Y-%b-%d")
    # always best to provide pre-sorted data to plotly
    df = df.sort_values(["date", "cat_1", "cat_2"])
    fig = px.histogram(
        df,
        nbins=5,
        x="numerical_col",
        color="cat_1",
        animation_frame="date",
        # range_x=[10000, 500000],
        facet_col="cat_2",
    )
    
    fig.update_layout(margin=dict(l=25, r=25, t=20, b=20))
    

    【讨论】:

    • 我的 cat_2 中有大约 40 个不同的类别,这是它没有按照应有的方式拆分的原因吗?我确实删除了范围,但输出仍然相同。我猜大概有 40-45 个不同的类别可能是一个原因?
    • 一行40个数字太多了。如果你的屏幕是 1600 宽,那么每行只有 40 个像素!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多