无法绘制动态饼图

时间:2014-03-30 04:41:01

标签: python graph turtle-graphics

我正在尝试使用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 :(得分:0)

我认为你的for循环应该看起来更像这样:

for percent in percentages:

percent_to_heading变量不是您想要的值。由于百分比列表中的每个元素都是您希望细分占据的圆的百分比,因此您应该将当前元素乘以360.

percent_to_heading = percent * 360

最后,您需要创建一个滚动百分比变量,该变量将包含当前角度和之前所有角度的总和。否则,段将彼此重叠。最终的功能看起来应该是这样的:

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