当前位置:  开发笔记 > 编程语言 > 正文

Matplotlib Python:如何添加面板按钮

如何解决《MatplotlibPython:如何添加面板按钮》经验,为你挑选了1个好方法。

我正在使用matplotlib创建一个简单的交互式绘图,用户可以在其中放置标记。为此,一切正常。

现在,我想添加一个按钮,当按下该按钮时,将执行某个功能。为此,我遵循了这个例子。但是使用按钮会导致意外行为。使用包含按钮而不是能够添加标记的方法,所有标记都放置在按钮区域内,并且根本不显示在图形中。这没有多大意义。

我正在寻找一种添加面板按钮的方法,就像每个matplotlib窗口中默认存在的那样。你有什么建议吗?我可以看看其他示例吗?我已经看到了很多示例,但是我发现很难浏览文档以找到所需的确切信息。提前致谢。

更新

我现在使用的代码如下所示:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button

dataX = np.array([1,2,3,4,5,6,7,8,9,10])
dataY = np.array([1193,1225,1125,1644,1255,13676,2007,2008,12359,1210])

def on_click(event):
    if event.dblclick:
        plt.plot((event.xdata, event.xdata),(mean-standardDeviation, mean+standardDeviation), 'r-')
        plt.show()

def _yes(event):
    print "yolo"

global mean, standardDeviation

# mean and standard deviation
mean = np.mean(dataY)
standardDeviation = np.std(dataY)

# plot data
plt.plot(dataX, dataY, linewidth=0.5)

plt.connect('button_press_event', on_click)

# button
axcut = plt.axes([0.9, 0.0, 0.1, 0.075])
bcut = Button(axcut, 'YES', color='red', hovercolor='green')
bcut.on_clicked(_yes)

plt.show()

未添加按钮时,一切正常。使用按钮,我只能将标记放置在按钮区域内。任何的想法?



1> VlS..:

您需要将两者分开。

让我们尝试subplot

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button

dataX = np.array([1,2,3,4,5,6,7,8,9,10])
dataY = np.array([1193,1225,1125,1644,1255,13676,2007,2008,12359,1210])

ax = plt.subplot(111)
def on_click(event):
    if event.dblclick:
       ax.plot((event.xdata, event.xdata), (mean-standardDeviation, mean+standardDeviation), 'r-')
       plt.show()

def _yes(event):
    print("yolo")

mean = np.mean(dataY)
standardDeviation = np.std(dataY)

ax.plot(dataX, dataY, linewidth=0.5)
plt.connect('button_press_event', on_click)

axcut = plt.axes([0.9, 0.0, 0.1, 0.075])
bcut = Button(axcut, 'YES', color='red', hovercolor='green')
bcut.on_clicked(_yes)

plt.show()

现在应该可以了。

但是,如果您不小心双击yes,它将在图形上画一条线。因此,如果将按钮操作更改为右键单击

def _yes(event):
    if event.button == 3:
        print("yolo")

现在很好:)

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有