Python xticks在子图中

时间:2013-10-28 02:56:15

标签: python matplotlib imshow

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

3 个答案:

答案 0 :(得分:110)

有两种方法:

  1. 使用子图对象的轴方法(例如ax.set_xticksax.set_xticklabels)或
  2. 使用plt.sca设置pyplot状态机的当前轴(即plt接口)。
  3. 作为示例(这也说明使用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()
    

    enter image description here

答案 1 :(得分:0)

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

  • 如果要设置xticklabels:

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

答案 2 :(得分:-1)

似乎在更高版本的Matplotlib中删除了set_yticksset_xticks函数。我做的是,而不是设置x,y刻度的大小,我只是改变了数字大小。

plt.figure(1, dpi=200, figsize=(20,20))

我知道这有点反直觉,但这对我有用...让我知道在Matplotlib的更高版本中是否有更好的方法来解决这个问题。感谢