【发布时间】:2019-11-09 14:26:00
【问题描述】:
我想在许多子图中的一个子图中更改 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()
这适用于 x 限制,但不适用于 xticks。更改一个子图中的刻度会覆盖所有其他刻度,而 x 限制仅在子图中更改,这是我想要的。我不明白为什么set_xticks 和set_xlim 在这种情况下会表现不同。有没有办法解决这个问题,同时仍然使用plt.subplots(sharex=True)?
【问题讨论】:
-
试试this
-
谢谢,我已经尝试过很多次了,但它对我不起作用。您实际上可以在您给出的示例中看到,那里的滴答声也发生了一些奇怪的事情。
-
重置共享时,所有轴上的代码仍然相同,因此在任何轴上更改它都适用于所有轴。
-
那我怎么只改变一个轴上的代码呢?
-
所以我想你的代码来自this question?我给出了一个新的答案,并建议将其作为重复项关闭,以便现有的解决方案都留在一个地方。
标签: python matplotlib subplot