使用子图时如何使用 matplotlib.pyplot.xticks 或类似的东西?

How can I use matplotlib.pyplot.xticks or similar when using subplots?

我想操纵子图中每个图的刻度。绘制单个图时,我通过使用得到了想要的结果:

import matplotlib.pyplot as plt
import numpy as np

# ...
# some data acquisition
# ...

ax.imshow(data[i], cmap=plt.cm.jet, origin='bottom')
ax.contour(x, y, dataFitted[i].reshape(2*crop, 2*crop), 3, colors='white')

# adjust scale from pixel to micrometers on heat maps
pixelSize = 5.5 # micrometer/pxl
scaleEnd = crop * pixelSize
wishedTicks = np.array([-150, -100, -50, 0, 50, 100, 150])
originalTicks = (wishedTicks + scaleEnd) / pixelSize

plt.xticks(originalTicks, wishedTicks)
plt.yticks(originalTicks, wishedTicks)

到目前为止,还不错,但如果我使用

fig, ax = plt.subplots(nrows=5, ncols=4)

创建子图,根据我的理解,函数 plt.xticks() 不再可用。

有没有办法通过

获得相同的结果

使用 plt.subplot (documentation) 而不是 plt.subplots 可能适合您的需要。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
x_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k']
y = np.arange(0, 20, 2)

for i in range(1, 5):
        ax = plt.subplot(2, 2, i)
        plt.plot(x, y)
        plt.xticks(x, x_labels)

plt.show()

产生这个:

还建议阅读 this article on subplots 以了解您可以使用它们做的更巧妙的事情。

始终使用显式轴进行绘图,至于设置 ticks/labels。

fig, axs = plt.subplots(5,4, figsize=(9,7))

for ax in axs.flat:
    ax.plot(...)
    ax.set_xticks(ticks)
    ax.set_xticklabels(labels)