我有一个QWidget,我用它来主持一些matplotlib绘图。我有多个绘图(目前有两个,但会增加),但一次只显示一个绘图。我有一个超时事件,每5秒钟当前的绘图就会从小部件中“删除”,下一个绘图就会添加到小部件中。这是我第一次体验matplotlib绘图,所以我不确定我的方法(下面)是否正确。你知道吗
设置两个绘图:
#PLOT 1
Data = #inherited from another class
DataArray = #inherited from another class
DataPos = DataArray > 0
DataNeg = DataArray < 0
self.Figure1 = plt.figure('Figure1')
self.Figure1.patch.set_alpha(0)
self.Canvas1 = FigureCanvas(self.Figure1)
self.LayoutWidget.addWidget(self.Canvas1)
self.Ax1 = plt.subplot(1, 1, 1, axisbg='black')
self.Ax1.bar(np.arange(len(DataArray))[DataPos], DataArray[DataPos], width=1, color='blue')
self.Ax1.bar(np.arange(len(DataArray))[DataNeg], DataArray[DataNeg], width=1, color='red')
self.Ax1.tick_params(axis='y', colors='white')
plt.title('GRAPH TIME', color='w', fontsize=30, fontname='Sans Serif', fontweight='bold'
self.Figure1.tight_layout()
plt.close() #Not sure if/why I need this line?
#PLOT 2
Radius = [1, 2, 3, 4, 5, 6]
Area = [1, 4, 2, 4, 6, 8]
self.Figure2 = plt.figure('Figure2')
self.Figure2.patch.set_alpha(0)
self.Canvas2 = FigureCanvas(self.Figure2)
self.Ax2 = plt.subplot(1, 1, 1, axisbg='black')
self.Ax2.tick_params(axis='y', colors='white')
plt.title('GRAPH TITLE', colors='w', fontsize=30, fontname='Sans Serif', fontweight='bold')
self.Figure2.tight_layout()
plt.plot(Radius, Area, color='blue', linewidth=5)
plt.close() #Again, not sure if/why this is needed.
以及更改小部件中绘图的超时函数:
#if current plot = 1:
self.LayoutWidget.removeWidget(self.Canvas1)
self.LayoutWidget.addWidget(self.Canvas2)
#This works as desired!
#elif current plot = 2:
self.LayoutWidget.removeWidget(self.Canvas2)
self.LayoutWidget.addWidget(self.Canvas1)
#This doesn't work!
#Stop the timeout timer, then restart the timer, etc.
这是可以接受的方法吗?你知道吗
我已经用这个玩了一个小时左右,已经实现了我想要的功能。我原来的代码中有一些东西需要修改。下面是修改后的代码,可以根据需要工作。你知道吗
设置两个绘图:
以及超时功能:
很简单!你知道吗
相关问题 更多 >
编程相关推荐