ChatGPT解决这个技术问题 Extra ChatGPT

子图中的 Python xticks

如果我绘制一个 imshow 情节,我可以使用

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

替换我的 xtick 标签。

现在,我正在使用 12 imshow 绘图

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

如何仅为这些子图之一更改我的 xticks?我只能使用 axarr[i, j] 访问子图的轴。如何仅为一个特定的子图访问 plt


J
Joe Kington

有两种方法:

使用 subplot 对象的轴方法(例如 ax.set_xticks 和 ax.set_xticklabels)或使用 plt.sca 为 pyplot 状态机(即 plt 接口)设置当前轴。

作为示例(这也说明了使用 setp 更改所有子图的属性):

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=3, ncols=4)

# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
        yticks=[1, 2, 3])

# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color='red')

fig.tight_layout()
plt.show()

https://i.stack.imgur.com/78yzF.png


你用的是什么版本?我为 plt.setp(ax, xtickslabels=xticks) 获得 AttributeError: Unknown property xtickslabels
I
ImportanceOfBeingErnest

请参阅 matplotlib 存储库上(相当)最近的 answer,其中建议使用以下解决方案:

如果要设置 xticklabels: ax.set_xticks([1,4,5]) ax.set_xticklabels([1,4,5], fontsize=12)

如果您只想增加 xticklabels 的字体大小,请使用默认值和位置(这是我个人经常需要并且非常方便的东西): ax.tick_params(axis="x", labelsize=12)

一次完成所有操作:plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", Horizontalalignment="left")`