【发布时间】: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