首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用单选按钮来控制饼图matplotlib?

如何使用单选按钮来控制饼图matplotlib?
EN

Stack Overflow用户
提问于 2021-12-28 18:42:52
回答 1查看 149关注 0票数 1

我的代码中有一个小问题,我希望有人能有一个想法来帮助我。因此,我已经创建了一个饼图,并使用RadioButtons,我想‘控制’‘爆炸参数’。预期结果:我们有一个饼图,我们有一个无线电按钮,当我们点击一个单选按钮,在饼图中,与点击的“意境”相匹配的“意境”被拉出来(感谢“爆炸”),只要我们愿意,我们就能做到这一点。

我的问题是:我已经创建了单选按钮,当它们被单击时,它会打开一个新窗口,其中包含预期的结果,但是我希望在同一个窗口中有饼图和Radiobuttons按钮。

我的代码就在下面:

代码语言:javascript
运行
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-28 19:14:10

通过在figax中创建explode_function,每次单击单选按钮时都会生成一个新的情节。预先创建figax,允许不断地处理相同的情节。作为初始化,explode_function(labels[0])已经显示了饼图的一个变体。fig.canvas.redraw()强制绘制更新的图表。

代码语言:javascript
运行
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70511229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档