我有两个堆叠的子图,它们共享x轴,对于这两个子图,刻度的可见性都设置为false,因为我不想看到刻度标签。在绘制了这两个子图之后,我想在x-asis上添加一些额外的标记,仅用于第二个子图,但它们不必成为主要标记。我的意思是,这样做:
#xticks = list of x points
#xlabs = list of labels
#secondplot.set_xticks(xticks)
#secondplot.set_xticklabels(xlabs)将根据这些新刻度更改第一个子绘图网格,就像它们成为新的主刻度一样。有没有一种方法可以在不影响整个绘图区域的情况下,只标记第二个子图中的一些x轴点?谢谢
发布于 2018-11-23 16:58:39
我知道我来晚了,但我也遇到了类似的问题,我想分享我的解决方案,以防其他人需要帮助。
可以使用matplotlib.axes.Axes.tick_params来控制轴的主要记号和次要记号的样式。将第一个子图的刻度长度设置为0应该可以实现此目的:
ax.tick_params(axis="x", which="both", length=0.)轴("x“、"y”或"both")选择设置对其产生影响的轴,其中(“重大”、“次要”或“两者”)选择刻度类型。当然,您还可以使用ax.set_xticks(ticks, minor=False)设置主要刻度和次要刻度。完整的示例:
import matplotlib.pyplot as plt
fig, axarr = plt.subplots(2, 1, sharex="col")
axarr[0].plot(range(11))
axarr[1].plot(range(11)[::-1])
axarr[0].tick_params(axis="x", which="both", length=0.)
axarr[1].set_xticks(range(0, 11, 3))
axarr[1].set_xticks(range(0, 11), minor=True)
plt.show()发布于 2016-06-25 04:30:40
这适用于在使用sharex时从单个轴中删除刻度标签,但我看不到也可以删除刻度的解决方案。
import matplotlib.pylab as pl
pl.figure()
ax1=pl.subplot(211)
ax1.plot([0,10],[0,10])
ax2=pl.subplot(212, sharex=ax1)
ax2.plot([0,10],[10,0])
pl.setp(ax1.get_xticklabels(), visible=False)

https://stackoverflow.com/questions/38014571
复制相似问题