gpt4 book ai didi

python - 将相同的 x 轴标签传递给 matplotlib 条形图的子图

转载 作者:行者123 更新时间:2023-11-30 22:27:09 25 4
gpt4 key购买 nike

我正在尝试创建条形图的子图。 matplotlib 在标记条形图的 x 轴方面很有趣,因此您需要传递索引,然后使用 xticks 函数传递标签。我想创建 2 个子图,每个子图都有相同的 x 轴标签,但使用下面的代码我只能将标签传递到最后一个条形图上。我的问题是如何将标签传递给两个条形图?

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(18,15))

r1 = axes[0].bar(idx, data1, align='center')
axes[0].set_title('title1')

r2 = axes[1].bar(idx, data2, align='center')
axes[1].set_title('title2')

plt.xticks(idx, idx_labels, rotation=45)

最佳答案

plt.xticks 因为所有其他 pyplot 命令都与当前事件的轴相关。通过 plt.subplots() 一次生成多个轴后,最后一个是当前轴,因此也是 plt.xticks 为其设置刻度的轴。

您可以使用plt.sca(axes)设置当前轴:

import matplotlib.pyplot as plt

idx, data1, data2, idx_labels = [1,2,3], [3,4,2], [2,5,4], list("ABC")

fig, axes = plt.subplots(nrows=2, ncols=1)

r1 = axes[0].bar(idx, data1, align='center')
axes[0].set_title('title1')

plt.sca(axes[0])
plt.xticks(idx, idx_labels, rotation=45)

r2 = axes[1].bar(idx, data2, align='center')
axes[1].set_title('title2')

plt.sca(axes[1])
plt.xticks(idx, idx_labels, rotation=45)

plt.show()

但是,在处理子图时,使用 matplotlib 的面向对象 API 而不是 pyplot 状态机通常更容易。在这种情况下,您可以使用 ax.set_xticks 和 ax.set_xticklabels ,其中 ax 是您要为其设置某些属性的轴。这更直观,因为可以从正在处理的轴的代码中轻松看出。

import matplotlib.pyplot as plt

idx, data1, data2, idx_labels = [1,2,3], [3,4,2], [2,5,4], list("ABC")

fig, axes = plt.subplots(nrows=2, ncols=1)

r1 = axes[0].bar(idx, data1, align='center')
axes[0].set_title('title1')

r2 = axes[1].bar(idx, data2, align='center')
axes[1].set_title('title2')

for ax in axes:
ax.set_xticks(idx)
ax.set_xticklabels(idx_labels, rotation=45)

plt.show()

关于python - 将相同的 x 轴标签传递给 matplotlib 条形图的子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47022279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com