使用共享的x轴更改一个子图的xticks

时间:2019-06-27 14:22:37

标签: python matplotlib subplot

我想在多个子图中的一个子图中更改xlimits和xticks,但它仅适用于xticks。

我正在绘制许多图,并且几乎所有图在一个图中都具有相同的x轴,因此决定使用plt.subplots(sharex=True)。对于一个图,我想在x轴上使用不同的限制和刻度。为此,我使用ax.get_shared_x_axes().remove(ax)从其他sharex图中删除了该图。


import matplotlib.pyplot as plt
fig, axes = plt.subplots(4,10,sharey=True, sharex=True)

axes_flat = axes.flat

for i in range(0,33) :
   xs = axes_flat[i]
   xs.plot([0,1,2],[2,3,4])
   xs.set_xticks([0,2])
   xs.set_xlim([0,4])


#leave some room between normal plots and plots with different xlims:
axes_flat[34].axis('off')
axes_flat[35].axis('off')

# Remove this plot from the shared axes and change xlims and xticks:
axes_flat[36].get_shared_x_axes().remove(axes_flat[36])
axes_flat[36].set_xticks([0,1])
axes_flat[36].set_xlim([0,2])

axes_flat[38].axis('off')
axes_flat[39].axis('off')

plt.show()

enter image description here

这对于x限制是预期的,但对于xticks却不起作用。更改一个子图中的刻度会覆盖所有其他刻度,而x限制仅在我想要的子图中更改。我不明白为什么在这种情况下set_xticksset_xlim的行为会有所不同。在仍然使用plt.subplots(sharex=True)的同时,有没有办法解决此问题?

1 个答案:

答案 0 :(得分:0)

我不知道是否可以使用tkinter来做到这一点,但是我做了一些类似的事情,您可以这样做:

plt.subplots(shared=True)

我希望这会有所帮助。