如何使用单选按钮来控制饼图 matplotlib?
How to use Radio Buttons to control a pie chart matplotlib?
我的代码中有一个小问题,希望有人能提供帮助。因此,我创建了一个饼图,并且使用 RadioButtons,我想 'control' 'explode parameter'。预期结果:我们有一个饼图,我们有单选按钮,当我们点击一个单选按钮时,在饼图中与点击的单选按钮匹配的 'serie' 被拉出(感谢 'explode')和我们想做多久就做多久。
我的问题:我已经创建了单选按钮,当它们被点击时,它会打开一个新的 window 和预期的结果,但我希望饼图和单选按钮在同一个 window.
我的代码就在下面:
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
通过在 explode_function
中创建 fig
和 ax
,每次单击单选按钮时都会生成一个新图。预先创建 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()
我的代码中有一个小问题,希望有人能提供帮助。因此,我创建了一个饼图,并且使用 RadioButtons,我想 'control' 'explode parameter'。预期结果:我们有一个饼图,我们有单选按钮,当我们点击一个单选按钮时,在饼图中与点击的单选按钮匹配的 'serie' 被拉出(感谢 'explode')和我们想做多久就做多久。
我的问题:我已经创建了单选按钮,当它们被点击时,它会打开一个新的 window 和预期的结果,但我希望饼图和单选按钮在同一个 window.
我的代码就在下面:
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
通过在 explode_function
中创建 fig
和 ax
,每次单击单选按钮时都会生成一个新图。预先创建 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()