在嵌套的GridSpec中,matplotlib按钮不起作用

回送

我正在尝试使用constrained_layout以及嵌套的GridSpecs来放置子图和按钮。这是一个最小的示例:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from matplotlib.widgets import Button

def on_click(event):
    print("hey")

fig = plt.figure(constrained_layout=True)

gs = gridspec.GridSpec(2, 1, height_ratios=[14, 1], figure=fig)

ax1 = fig.add_subplot(gs[0, 0])
ax1.text(0.5, 0.5, "ax1", va="center", ha="center")

ax2 = fig.add_subplot(gs[1, 0])

b = Button(ax2, 'hey')
b.on_clicked(on_click)

plt.show()

到目前为止,此方法仍然可以正常工作,当鼠标悬停时按钮会更改颜色,并且在单击时执行回调,这是使用顶级GridSpec的轴创建按钮时可以正常工作的图像

图片

现在,当我尝试嵌套GridSpecs时,即

ax2 = fig.add_subplot(gs[1, 0])

被替换为

gs2 = gs[1, 0].subgridspec(1, 2)
ax2 = fig.add_subplot(gs2[0, 1])

布局是所需的,

图片

但按钮不起作用(悬停时无颜色变化,单击时无反应)。

尝试过plt.sca(ax2),没有变化。有趣的是,当我取出时constrained_layout=True,按钮起作用。

这是错误,还是这里发生了什么?有人可以说明一下吗?

请不要建议使用tight_layout()和/或subplots_adjust()上面只是一个最小的示例,在现实生活中,我有一个相当复杂的图形,其中包含许多子图和几个按钮。为了避免标签重叠等,我需要使用constrained_layout。ight_layout有局限性(例如,未正确考虑所有元素,例如Figure.suptitle())。constrained_layout以及嵌套的GridSpec似乎是一个很好的解决方案,但上述问题除外。

谢谢你的帮助!

乔迪·克里马克(Jody Klymak)

解决方法是zorder将新轴放置在所创建的“重影”上方constrained_layout

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from matplotlib.widgets import Button

def on_click(event):
    print("hey")

fig = plt.figure(constrained_layout=True)

gs = gridspec.GridSpec(2, 1, figure=fig)

ax1 = fig.add_subplot(gs[0, 0])
ax1.text(0.5, 0.5, "ax1", va="center", ha="center")

gs2 = gs[1, 0].subgridspec(1, 2)
ax2 = fig.add_subplot(gs2[0, 1])
ax2.set_zorder(10)
b = Button(ax2, 'hey')
b.on_clicked(on_click)

plt.show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LinkButton在嵌套的GridView中不起作用

来自分类Dev

函数中的嵌套IF不起作用

来自分类Dev

表格中的嵌套表格不起作用

来自分类Dev

ElasticSearch中的嵌套搜索不起作用?

来自分类Dev

matplotlib在Pycharm 4.5.3中不起作用

来自分类Dev

增量按钮在magento中不起作用

来自分类Dev

preventDefault在提交按钮中不起作用

来自分类Dev

音量按钮在14.04中不起作用

来自分类Dev

删除按钮在CodeIgniter中不起作用

来自分类Dev

按钮在android片段中不起作用

来自分类Dev

后退按钮在actionBar中不起作用

来自分类Dev

CardLayout中的按钮不起作用

来自分类Dev

iframe中的按钮不起作用

来自分类Dev

音量按钮在14.04中不起作用

来自分类Dev

按钮在ListView中不起作用

来自分类Dev

UITableview中的单选按钮不起作用

来自分类Dev

按钮在列表PHP中不起作用

来自分类Dev

按钮在Android AudioManager中不起作用

来自分类Dev

删除按钮在CodeIgniter中不起作用

来自分类Dev

声音按钮在KDE中不起作用

来自分类Dev

PHP中的“删除”按钮不起作用

来自分类Dev

增量按钮在magento中不起作用

来自分类Dev

按钮命令在DataTemplate中不起作用

来自分类Dev

按钮在AngularJs中不起作用

来自分类Dev

按钮在 jQuery 函数中不起作用

来自分类Dev

单选按钮在 reactjs 中不起作用

来自分类Dev

提交按钮在 FormGroup 中不起作用

来自分类Dev

按钮不起作用

来自分类Dev

按钮不起作用