无法绘制动态饼图

0 投票
1 回答
929 浏览
提问于 2025-04-18 00:31

我正在尝试用Turtle画一个动态的饼图,这个饼图可以根据不同的数据集来变化。但是不知为什么,它没有画出分段的线条。

有没有人能帮我找出我代码中的问题,让它能像我想的那样执行segment()这个函数呢?

chart_title = 'Tourism GDP by States/Territories in Australia'
segment_labels = ['QLD', 'VIC', 'NSW', 'SA', 'WA', 'TAS', 'NT', 'ACT']
percentages = [0.24, 0.22, 0.328, 0.06, 0.082, 0.03, 0.02, 0.02]

from turtle import *

radius = 200


penup()
forward(radius)
left(90)
pendown()
color('palegreen')
begin_fill()
circle(radius)
end_fill()
home()
right(90)
color('black')

def segment(percentages):
    for _ in percentages[:]:
        radius=200
        percent_to_heading=((percentages*100)/360)*100
        setheading(percent_to_heading)
        pendown()
        forward(radius)
        penup()
        home()

1 个回答

0

我觉得你的for循环应该像这样:

for percent in percentages:

percent_to_heading这个变量不是你想要的值。因为列表中的每个百分比都是你希望这个部分占据的圆的百分比,所以你应该把当前的元素乘以360。

percent_to_heading = percent * 360

最后,你需要创建一个滚动的percent变量,它会包含当前角度和之前所有角度的总和。否则这些部分会重叠在一起。最终的函数应该像这样:

def segment(percentages):
    rollingPercent = 0
    radius=200
    for percent in percentages:
        segment = percent * 360
        rollingPercent += segment
        setheading(rollingPercent)
        pendown()
        forward(radius)
        penup()
        home()

撰写回答