0
我繪製的數據超過4個維度。爲了使可視化更容易,我還想繪製不同維度的所有可能的2D和3D組合。Matplotlib Radiobutton在clf()後不再工作()
要做到這一點,我想要一個數字,並使用RadioButtons
瀏覽不同的選項。現在,當我從2D轉換到3D時,我需要不同數量的軸,因此我清除了整個圖形並再次繪製了所有圖形,但是我的RadioButton
不再工作(儘管我在clf()
之後再次繪製它):
class TEST(object):
def __init__(self):
self.num2d = 6
self.rows2d = 3
self.cols2d = 2
self.num3d = 4
self.rows3d = 2
self.cols3d = 2
self.fig2 = plt.figure()
self.add2dAxes = []
for i in range(self.num2d):
ii = 100*self.rows2d + 10*self.cols2d + i+1
self.add2dAxes.append(plt.subplot(ii))
self.add_dim = 2
self.updatePlotAdd()
def click_dim(dim):
print dim
if dim == "2D":
self.updatePlotAdd2d()
elif dim == "3D":
self.updatePlotAdd3d()
else:
self.updatePlotAdd4d()
self.radioDim.on_clicked(click_dim)
self.fig2._my_btn = self.radioDim
plt.show()
def updatePlotAdd2d(self):
print "2D"
self.add_dim = 2
self.fig2.clf()
self.add2dAxes = []
for i in range(self.num2d):
ii = 100*self.rows2d + 10*self.cols2d + i+1
self.add2dAxes.append(plt.subplot(ii))
self.updatePlotAdd()
def updatePlotAdd3d(self):
print "3D"
self.add_dim = 3
self.fig2.clf()
self.add3dAxes = []
for i in range(self.num3d):
ii = 100*self.rows3d + 10*self.cols3d + i+1
self.add3dAxes.append(plt.subplot(ii))
self.updatePlotAdd()
def updatePlotAdd4d(self):
print "4D"
self.add_dim = 4
self.fig2.clf()
self.updatePlotAdd()
def updatePlotAdd(self):
print "updatePlotAdd"
rax = plt.axes([0.01, 0.7, 0.08, 0.1], axisbg='grey')
self.radioDim = RadioButtons(rax, ("2D", "3D","> 3D"), active=self.add_dim-2)
self.fig2.canvas.draw()
此示例顯示了第一次單擊按鈕時軸的變化是如何完美的,但從此按鈕不再響應。
你可以減少到最低_minimal_版本,將複製問題?這裏有太多的代碼與您的問題無關。人們願意提供幫助,但可能不願意徹底排除那些混亂。 – tacaswell