Python Turtle:具有单个分隔段的动态饼图

时间:2014-04-05 04:38:50

标签: python charts pie-chart turtle-graphics

所以我对大学有挑战,它涉及制作一个带有单个分段的动态饼图

我已经

    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):
        rollingPercent = 0
        radius=200
        for percent in percentages:
            segment = percent * 360
            rollingPercent += segment
            setheading(rollingPercent)
            pendown()
            forward(radius)
            penup()
            home()

这是对的吗? 因为当我执行代码时,它只绘制一个绿色圆圈,并且不会在饼图中绘制任何段

2 个答案:

答案 0 :(得分:1)

您的代码由几部分组成。

第1节:

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]
radius = 200

第2节:

from turtle import *

第3节:

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

第4节:

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

在第一部分中,您将定义一些变量 在第二部分中,您将导入turtle模块(库) 在第3部分中,您将从龟库中执行一些绘制绿色圆圈的函数

现在重要一点。在第4节中,您定义了一个函数(称为segment),可以绘制段。但是,在您明确要求之前,它不会绘制段。如果您不熟悉函数的内容,则应阅读有关此问题的一些教程。理解它们非常重要(请参阅hereherehere)。

因此,虽然已经定义了绘制段的函数,但是您没有调用该函数(在函数中运行代码)。您的函数采用一个参数(参数)percentages,它是段的百分比列表。请注意,在这种情况下,变量名percentages是指仅存在于函数segment中的局部变量,它不一定是指您在代码的第1部分中定义的列表(但它可以) 。要了解我对局部变量的含义,请阅读this

所以你需要调用你的函数。为此,您需要添加代码行segment(percentages),该代码行调用函数segment并将percentages列表作为参数传递。

完整代码:

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):
    rollingPercent = 0
    radius=200
    for percent in percentages:
        segment = percent * 360
        rollingPercent += segment
        setheading(rollingPercent)
        pendown()
        forward(radius)
        penup()
        home()
segment(percentages)

从您的评论中可以清楚地看出,您需要熟悉Python中的函数,因此我建议您阅读一些教程并了解基础知识。它将使未来的生活更轻松,并真正为您打开编程功能。

答案 1 :(得分:0)

您已定义功能segment来执行某些操作,但您从未真正调用或运行它 - 这就是为什么它不执行任何操作以外的操作为你画一个圆圈。您可以通过segment()在新的非缩进行上执行此操作。