我有一个包含许多补丁的现有绘图(轴)。我希望向现有轴添加一些按钮。如果我编写以下代码,它将使整个轴作为按钮,即在轴上的任何位置检测到单击。
# ax is the reference to axes containing many patches
bSend = Button(ax, 'send')
bSend.on_clicked(fu)
example matplotlib 给出的不使用现有轴,而是使用新轴(?)
# Create axes
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
# Make Buttons of those axes.
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
有没有办法可以将 Button 定位在现有轴上?
最佳答案
matplotlib.widgets.Button
位于其自己的轴中,您需要通过第一个参数提供该轴。所以你需要在某处创建一个轴。
根据您想要实现的目标,您可以简单地选择轴内的坐标,
button_ax = plt.axes([0.4, 0.5, 0.2, 0.075]) #posx, posy, width, height
Button(button_ax, 'Click me')
这里的坐标以图形宽度和高度为单位。因此,按钮将创建为图形宽度的 40%、图形高度的 50%、宽度为 20%、高度为 7.5%。
或者,您可以使用 InsetPosition
将按钮轴相对于子图轴放置。
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
from mpl_toolkits.axes_grid1.inset_locator import InsetPosition
fig, ax= plt.subplots()
button_ax = plt.axes([0, 0, 1, 1])
ip = InsetPosition(ax, [0.4, 0.5, 0.2, 0.1]) #posx, posy, width, height
button_ax.set_axes_locator(ip)
Button(button_ax, 'Click me')
plt.show()
此处,按钮位于轴宽度的 40%、高度的 50%、轴宽度的 20% 和高度的 8%。
关于python - 按钮在轴中的定位 (matplotlib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47489873/