子图中的Python xticks


83

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

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

替换我的xtick标签。

现在,我正在imshow使用绘制12个地块

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

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

Answers:


161

有两种方法:

  1. 使用子图对象的轴方法(例如ax.set_xticksax.set_xticklabels)或
  2. 使用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)
Frederick Nord

19

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

  • 如果要设置xticklabels:

    ax.set_xticks([1,4,5]) 
    ax.set_xticklabels([1,4,5], fontsize=12)
    
  • 如果只想增加xticklabel的字体大小,请使用默认值和位置(这是我个人经常需要的东西,非常方便):

    ax.tick_params(axis="x", labelsize=12) 
    
  • 一次完成所有操作:

    plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", 
             horizontalalignment="left")`
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.