我在使用subplot时,如何使用matplotlib.pyplot.xticks或类似方法?

2024-09-29 23:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想操纵我子图中每个图的刻度。绘制单个绘图时,我使用以下方法获得所需结果:

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()不再可用。你知道吗

有没有一种方法可以通过

  • 或者全局(对于所有图形)以与我对单个绘图相同的方式操纵轴

或者

  • 以上述所需方式单独操作每个子批?你知道吗

Tags: 方法cropimport绘图dataasnp方式
2条回答

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

产生以下结果: output

还建议阅读this article on subplots,看看你可以用它们做些更整洁的事情。你知道吗

始终使用显式轴进行打印,如设置记号/标签。你知道吗

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

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

相关问题 更多 >

    热门问题