子图中的 Python xticks

Posted

技术标签:

【中文标题】子图中的 Python xticks【英文标题】:Python xticks in subplots 【发布时间】:2013-11-06 17:41:51 【问题描述】:

如果我绘制一个 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

【问题讨论】:

【参考方案1】:

有两种方式:

    使用 subplot 对象的轴方法(例如 ax.set_xticksax.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()

【讨论】:

你用的是什么版本?我收到了AttributeError: Unknown property xtickslabels plt.setp(ax, xtickslabels=xticks)【参考方案2】:

在 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")`

【讨论】:

以上是关于子图中的 Python xticks的主要内容,如果未能解决你的问题,请参考以下文章

更改 python 子图中的字体大小

如何在 Python matplotlib 子图中显示图例

python—networkx:在一张图中画出多个子图

在子图中创建表

python使用matplotlib可视化subplots绘制子图自定义几行几列子图,如果M行N列,那么最终包含M*N个子图在指定的子图中添加可视化结果

如何在 Matplotlib 的子图中独立绘制相同的图形? [复制]