我正在尝试使用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()
答案 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()