【问题标题】:How to remove numerical x-ticks under custom labels in matplotlib's boxplot?如何在 matplotlib 的箱线图中删除自定义标签下的数字 x 刻度?
【发布时间】:2020-02-26 15:18:20
【问题描述】:

我想将多个箱线图(在 python3 中使用 matplotlib)绘制成一个图形,并沿 x 轴相应地标记它们。我尝试了多种方法来设置自定义 x-ticks,但旧的数字刻度总是显示出来。

以下两个代码 sn-ps 产生相同的结果。在第一个中,我使用plt.xticks(ticks, labels, rotation='vertical') 设置刻度(也不适用于旋转)。 在这两种情况下,compressed_runs 都是一个字典,其中键与 x-ticks 的标签一致,值是数字数组。

plt.figure(figsize=[10, 8], dpi=300)
labels = ['test']*len(compressed_runs)
ticks = [i+1 for i, v in enumerate(compressed_runs)]

plt.xticks(ticks, labels, rotation='vertical')
plt.ylabel('communication times [µs]')
plt.title('Test title')

plt.boxplot(compressed_runs.values(), showfliers=False)
plt.savefig(plotname)
plt.close()

我也试过直接修改图形的轴:

fig = plt.figure(figsize=[10, 8], dpi=300)
labels = ['test']*len(compressed_runs)
ticks = [i+1 for i, v in enumerate(compressed_runs)]

plt.xticks(ticks, labels, rotation='vertical')
fig.axes[0].set_xticklabels(labels)
plt.ylabel('communication times [µs]')
plt.title('Test title')

plt.boxplot(compressed_runs.values(), showfliers=False)
plt.savefig(plotname)
plt.close()

如图所示,枚举的 x-ticks 仍然从命名的 x-ticks 下方显示出来。在这种情况下,我希望每个箱线图下只有“测试”。

【问题讨论】:

    标签: python matplotlib label boxplot axes


    【解决方案1】:

    问题原来是函数调用的顺序。 plt.xticks(ticks, labels) 应该在创建箱线图之后调用,而不是之前。数字刻度是箱线图的默认行为,它被打印在之前明确设置的标签上。在我的工作代码中:

    plt.boxplot(compressed_runs.values(), showfliers=False)
    plt.xticks(ticks, labels, rotation='vertical')
    

    而不是

    plt.xticks(ticks, labels, rotation='vertical')
    plt.boxplot(compressed_runs.values(), showfliers=False)
    

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多