python-保存matplotlib图形时如何隐藏自定义按钮?

我是pyplot的新手.我需要在绘图中添加一个自定义按钮,这是通过以下代码行完成的:

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()

这行代码成功地为我提供了所需的解决方案.但是我的问题是,当我尝试通过单击工具栏上的按钮来保存图形时,是否可能不显示该自定义按钮?

最佳答案

一种策略可能是隐藏按钮,并仅在需要时(即,当您想单击它时)显示它.
想到了几种可能性,例如按一个键以显示/隐藏按钮或双击图中的某个位置.
我想一个简单的方法可能是只在鼠标悬停在其所在的轴上时显示该按钮.(对于初次使用的用户来说,这可能是一种糟糕的用户体验,但是如果使用该应用程序的人是同一个人,那么他或她应该知道按钮的位置并放上鼠标.)

这是一个工作示例:

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 on_enter(event):
    axcut.set_visible(True)
def on_leave(event):
    axcut.set_visible(False)
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)
plt.connect("axes_enter_event", on_enter)
plt.connect("axes_leave_event", on_leave)


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

plt.show()