箱形图因同名而重叠

Box plot are overlapping because of same name

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 轴上使用相同的标识符

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