我的代碼有一個小問題,我希望有人能有想法來幫助我。因此,我創建了一個餅圖,并且使用 RadioButtons,我想“控制”“爆炸引數”。預期結果:我們有一個餅圖,我們有 Radiobutton,當我們單擊一個單選按鈕時,在餅圖中,與單擊的 Radiobutton 匹配的“serie”被拉出(感謝“explode”),我們可以做到這一點只要我們愿意。
我的問題:我已經創建了單選按鈕,當它們被點擊時,它會打開一個具有預期結果的新視窗,但我希望餅圖和單選按鈕在同一個視窗中。
我的代碼如下:
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
rax = plt.axes([0.05, 0.7, 0.15, 0.15])
radio = RadioButtons(rax, ('0-4 ans', '5-10 ans', '11-13 ans', '14-17 ans'))
def explode_function(label):
labels = '0-4 ans', '5-10 ans', '11-13 ans', '14-17 ans'
sizes = [17.4, 25.7, 18.6, 38.3]
explode = (0, 0, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')
fig1, ax = plt.subplots()
if label == '0-4 ans':
explode = (0.15, 0, 0, 0)
elif label == '5-10 ans':
explode = (0, 0.15, 0, 0)
elif label == '11-13 ans':
explode = (0, 0, 0.15, 0)
elif label == '14-17 ans':
explode = (0, 0, 0, 0.15)
ax.pie (sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, colors=['lightblue', 'lightgreen', 'salmon', 'lightgray'])
plt.show()
radio.on_clicked(explode_function)
plt.show()```
Thanks a lot, and good evening
uj5u.com熱心網友回復:
通過創建fig和ax里面的explode_function,一個新的情節將每一個單選按鈕被點擊時生成。創建fig和ax預先,允許不斷使用相同的情節。作為初始化,explode_function(labels[0])已經顯示了餅圖的一個變體。fig.canvas.redraw()強制繪制更新的圖表。
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
fig = plt.figure()
ax = plt.subplot(1, 1, 1)
rax = plt.axes([0.05, 0.7, 0.15, 0.15])
labels = '0-4 ans', '5-10 ans', '11-13 ans', '14-17 ans'
radio = RadioButtons(rax, labels)
def explode_function(label):
ax.cla()
sizes = [17.4, 25.7, 18.6, 38.3]
explode = [0.15 if label == label_i else 0 for label_i in labels]
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, colors=['lightblue', 'lightgreen', 'salmon', 'lightgray'])
fig.canvas.draw()
explode_function(labels[0])
radio.on_clicked(explode_function)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/396303.html
標籤:matplotlib 按钮 图表 收音机
