使用子图时如何使用 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)
我想操纵子图中每个图的刻度。绘制单个图时,我通过使用得到了想要的结果:
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)