Matplotlib 为啥我点击后绘图功能会在按钮内绘制?
Posted
技术标签:
【中文标题】Matplotlib 为啥我点击后绘图功能会在按钮内绘制?【英文标题】:Matplotlib why does the plot function draw inside the button after i click?Matplotlib 为什么我点击后绘图功能会在按钮内绘制? 【发布时间】:2021-08-09 19:46:53 【问题描述】:您好,我正在尝试在按钮单击事件后在我的绘图中绘制图形,问题是图形是在按钮内部绘制的,而不是正常的绘图。
代码如下:
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider,Button
class Details:
def drawPlot(self,event):
plt.plot([1,3,4])
def addTitle(self,title):
plt.title(title)
def plot(self):
x = 1
plt.show()
def addButton(self):
self.axnext = plt.axes([0.71, 0.1, 0.1, 0.075])
self.bnext = Button(self.axnext, 'Next')
self.bnext.on_clicked(self.drawPlot)
d = Details()
d.addTitle("cas dakar 1")
d.addButton()
d.plot()
提前致谢!
【问题讨论】:
【参考方案1】:plt.plot
在当前坐标区上绘制。因此,当您为按钮创建轴时,它将成为当前轴,然后您尝试绘制,它会在那里绘制而不是您的主轴。
如果你切换到object-oriented interface,这个问题就消失了:
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider,Button
class Details:
def __init__(self):
fig, ax = plt.subplots()
self.fig = fig
self.ax = ax
def drawPlot(self,event):
self.ax.plot([1,3,4])
def addTitle(self,title):
self.ax.set_title(title)
def plot(self):
x = 1
plt.show()
def addButton(self):
self.axnext = plt.axes([0.71, 0.1, 0.1, 0.075])
self.bnext = Button(self.axnext, 'Next')
self.bnext.on_clicked(self.drawPlot)
d = Details()
d.addTitle("cas dakar 1")
d.addButton()
d.plot()
【讨论】:
问题,有没有办法在我点击按钮之前隐藏绘图区域?谢谢。以上是关于Matplotlib 为啥我点击后绘图功能会在按钮内绘制?的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 matplotlib 内联绘图时,为啥在 jupyter notebook 中出现 NonGuiException?