提问者:小点点

由于名称相同,方框图重叠


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,
        )

因此,如果列表中有两个名称,名称1=ABCDEFGHIJKL名称2=ABCDEFGHIJKLM

截断后名称1=ABCDEFGHIJKL名称2=ABCDEFGHIJKL

所以两者在x中是相同的。

具有相同x的重叠盒印迹

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


共1个答案

匿名用户

  • 再利用https://plotly.com/python/box-plots/#box-以plotlyexpress为基础绘制可重新运行的示例
  • 模拟您注意到的问题,其中x值重叠
  • 决议
    1. 不截断x值
    2. 通过更新xaxis刻度来解决,以便显示截断的值并保持条形图
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]))