【问题标题】:Box plot are overlapping because of same name由于名称相同,箱线图重叠
【发布时间】:2021-12-12 23:43:26
【问题描述】:
for design in list
    if len(design) > 12:
        df["Name"] = str(design)[:12] + str("...")

    fig.add_trace(
        go.Box(
            x=df["Name"],
            y=df[y_variable],
            name="",
            quartilemethod=quartile_method,
            boxpoints=False,
        )

所以如果我在列表中有 2 个名字 名称 1 = ABCDEFGHIJKL name2 = ABCDEFGHIJKLM

截断后 名称 1 = ABCDEFGHIJKL name2 = ABCDEFGHIJKL

所以两者在 x 中变得相同。

具有相同 x 的重叠框印迹

如何克服这个问题? 我尝试使用唯一标识符,但同时我想在 x 轴上使用相同的标识符

【问题讨论】:

标签: python plotly plotly-dash boxplot


【解决方案1】:
import plotly.express as px
import plotly.graph_objects as go

df = px.data.tips()
df["name"] = df["time"].map({"Dinner": "ABCDEFGHIJKLMNO", "Lunch": "ABCDEFGHIJKLMNOP"})

go.Figure(
    [
        go.Box(
            x=df.loc[df["name"].eq(n), "name"].str[0:12],
            y=df.loc[df["name"].eq(n), "total_bill"],
            name=n,
            boxpoints=False
        )
        for n in df["name"].unique()
    ]
).show()


go.Figure(
    [
        go.Box(
            x=df.loc[df["name"].eq(n), "name"],
            y=df.loc[df["name"].eq(n), "total_bill"],
            name=n,
            boxpoints=False
        )
        for n in df["name"].unique()
    ]
).update_layout(xaxis=dict(tickmode="array", tickvals=df.loc[:, "name"], ticktext=df.loc[:, "name"].str[0:12]))

【讨论】:

  • 是否有可能从情节上方的悬停文本中附加/删除文本?我们可以在悬停文本中显示来自 x 刻度文本(如 ABCDEFGHIJK)的不同文本吗?前任。在 x 轴刻度中有 ABCDEFGHIJK,但在图上的 hovertext 中有 ABCDEFGHIJK123
  • 您的示例代码使用了图形对象,所以我使用了。 px.box(df, x=df["name"].str[0:12], y="total_bill", color="name", hover_name="name", points="all") 与 Plotly Express 的解决方案相同。悬停信息仅针对分散点,而不是四分位数。显然是颜色和图例
  • 谢谢@Rob Raymond
猜你喜欢
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2023-03-29
  • 2018-10-29
  • 1970-01-01
  • 2021-05-19
  • 2012-01-30
相关资源
最近更新 更多