如何使用 Plotly 删除堆叠和分组条形图中的 x 轴刻度标签

阿隆·范比伦

我有一个数据集:

数据集

我想使用 Plotly 在堆叠和分组的条形图中可视化此数据集。不幸的是,Plotly没有这种类型的图表还没有,但这个解决办法,我尽力了。

我的代码:

sv_clusters = ["cluster_1", "cluster_2", "cluster_3", "cluster_4", "cluster_5", "cluster_6", "cluster_7"]
sv_data = sv_data[["Population", "Sample_name"] + sv_clusters]

for r in sv_clusters:
    fig.add_trace(
        go.Bar(
            x=[sv_data.Population, sv_data.Sample_name],
            y=sv_data[r],
            name=r,
            marker=dict(
                line_width=0)),
    )

fig.update_layout(
    template="simple_white",
    xaxis=dict(title_text=None),
    yaxis=dict(title_text="fraction"),
    width=2000,
    bargap=0,
    title='Alles',
    barmode="stack",

现在我的情节是这样的:

情节1

我想删除 x 标签刻度,因为它使图表混乱(样本名称而不是总体名称)。所以我尝试了showticklabels=False,结果是:

情节2

这将删除所有 x 轴标签。

如何删除样本名称刻度标签?

罗布·雷蒙德
import requests
import pandas as pd
import numpy as np
import plotly.graph_objects as go

# generate some data... similar to what was presented
sv_data = pd.DataFrame(
    {
        "Population": pd.json_normalize(
            requests.get("https://restcountries.eu/rest/v2/all").json()
        )["subregion"].unique()
    }
).loc[0:6,].assign(
    Sample_name=lambda d: d["Population"]
    .str[:2]
    .str.upper()
    .apply(lambda s: [f"{s}{i}" for i in range(1500, 1550)])
).explode(
    "Sample_name"
).assign(**{f"cluster_{i}":lambda d: np.random.uniform(0,1, len(d)) for i in range(1,8)})

sv_clusters = ["cluster_1", "cluster_2", "cluster_3", "cluster_4", "cluster_5", "cluster_6", "cluster_7"]
sv_data = sv_data[["Population", "Sample_name"] + sv_clusters]
fig=go.Figure()

# instead of categoricals use concatenated value for x,  define text to hover works
for r in sv_clusters:
    fig.add_trace(
        go.Bar(
            x=sv_data.loc[:,["Population","Sample_name"]].apply(lambda r: " ".join(r), axis=1),
            y=sv_data[r],
            text=sv_data.loc[:,["Population","Sample_name"]].apply(lambda r: " ".join(r), axis=1),
            name=r,
            marker=dict(
                line_width=0)),
    )

# given simple x,  set tick vals as wanted
fig.update_layout(
    template="simple_white",
    yaxis=dict(title_text="fraction"),
    width=2000,
    bargap=0,
    title='Alles',
    barmode="stack",
    xaxis={"tickmode":"array", "tickvals":sv_data.loc[:,["Population","Sample_name"]].apply(lambda r: " ".join(r), axis=1),
          "ticktext":np.where(sv_data["Population"]==sv_data["Population"].shift(), "", sv_data["Population"])}
)


在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Pandas barplot中旋转x轴刻度标签

matplotlib中的y轴刻度标签和x轴刻度标签重叠

matplotlib中的y轴刻度标签和x轴刻度标签重叠

在Plotly Python中移动x轴和y轴刻度

如何下标x轴刻度标签

如何在chart.js的条形图中隐藏y轴和x轴线以及标签

使用ggplot更改x轴刻度标签

如何解决 d3在条形图中X轴上的刻度线数?

如何在海图中设置x轴刻度标签?

如何控制胜利x轴刻度标签

如何旋转Seaborn Barplot X轴刻度标签?

如何在Matplotlib和Seaborn中的x轴刻度线(不是刻度线标签)和x轴之间添加填充

使用子图时更改x轴刻度标签

R:条形图中的x轴-条形图中间的x轴和中心刻度线的宽度

如何在ggplot条形图中沿x轴分组

x和y轴的刻度标签的不同字体大小

使用日期的轮廓图的 x 轴刻度标签

D3 - 如何在两个刻度之间放置 x 轴值和标签

Plotly - 使轴刻度标签响应

如何使用 ggplot 在堆叠和分组条形图中显示值标签

使用 Epoch 秒作为 X 轴值时,如何格式化 X 轴刻度标签?

Plotly:如何在绘图内/轴右侧设置 y 轴刻度标签?

如何使用子图在 Seaborn 散点图中旋转 x 轴刻度标签

如何使用 Recharts 在 X 轴上显示 4 年月份数字的刻度和标签

如何更改facet-wrapt堆积条形图中的x轴刻度--ggplot R

如何在保持条形高度的堆叠条形图中添加百分比标签(R plotly)

如何在python条形图中添加x轴标签

如何使用 Plotly Python 在具有多个 x 轴的单个 y 刻度上绘制散点图?

如何更改ggplot2中x和y轴的刻度标签,轴消失