在python3.6.5中使用matplotlib2.2.2和gridspec,我为一篇研究论文创建了一个包含多个子图的巨大图。axes对象存储在名为axes
的字典中。这个字典被传递给函数adjust_xticklabels()
,该函数应该将每个子图中的第一个xticklabel稍微向右对齐,最后一个xticklabel稍微向左对齐,这样相邻图的xticklabel就不会相互妨碍。功能定义为:
def adjust_xticklabels(axes, rate = 0.1):
for ax in axes.values():
left, right = ax.get_xlim() # get boundaries
dist = right-left # get distance
xtl = ax.get_xticklabels()
if len(xtl) > 1:
xtl[0].set_position((left + rate*dist, 0.)) # (x, y), shift right
xtl[-1].set_position((right - rate*dist, 0.)) # shift left
打电话没有效果。当然,我也试过了,值高得离谱。然而,is在y方向上具有效果,例如在设置xtl[0].set_position((0.3, 0.3))
的情况下
简单的复制品:
ax = plt.subplot(111)
ax.plot(np.arange(10))
xtl = ax.get_xticklabels()
xtl[4].set_position((0.3, 0.3)) # wlog, 4 corresponds to 6
我花了很长时间试图弄清楚这是一个特性还是一个bug。我错过什么了还是这是一个错误?有没有其他方法可以做同样的事情
这是一个功能,没有错误。根据所使用的自动售票机,标签在取款时放置在正确的位置。这样可以确保标签始终位于相应记号所在的位置。如果更改限制、移动或缩放绘图,标签将始终跟随这些更改
您通常不想更改此位置,但可以通过向其添加自定义变换来进行更改。如中所述 Moving matplotlib xticklabels by pixel value。一般的想法是在标签上设置一个翻译转换。例如,将第二个标签向右平移20像素
相关问题 更多 >
编程相关推荐