子图中的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

解决办法

有两种方法:

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

评论(1)

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

  • 如果你想设置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")`。
评论(0)

似乎在Matplotlib的后期版本中,set_yticksset_xticks函数被移除。我所做的是,我没有设置x、y刻度线的大小,而只是改变了图形的大小。

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

我知道这有点反直觉,但这对我来说是有效的......如果在Matplotlib的后期版本中,有更好的方法来解决这个问题,请告诉我。谢谢

评论(0)