乌龟:根据高度填充图表中的条形图

时间:2014-05-09 18:10:20

标签: python function fill turtle-graphics

Python中的Turtles模块:

我想用基于高度的颜色填充条形。下面的代码正确绘制了条形图,但颜色与if语句不匹配。怎么了?

它正在填补:    [黑色,绿色,黄色,红色,红色,黄色,红色]

它应该是:    [绿色,黄色,红色,红色,黄色,红色,红色]

import turtle

def drawBar(t, height):
    """ Get turtle t to draw one bar, of height. """
    t.begin_fill()               # start filling this shape
    t.left(90)
    t.forward(height)
    t.write(str(height))
    t.right(90)
    t.forward(40)
    t.right(90)
    t.forward(height)
    t.left(90)
    t.end_fill()                 # stop filling this shape

def fillColor(t,height):
    drawBar(t,height)
    if height >=200:
        t.fillcolor("red")
    elif height >= 100 and height < 200:
        t.fillcolor("yellow")
    else:
        t.fillcolor("green")


xs = [48,117,200,240,160,260,220]  # here is the data
maxheight = max(xs)
numbars = len(xs)
border = 10

tess = turtle.Turtle()           # create tess and set some attributes
#tess.color("blue")
#tess.fillcolor("red")
tess.pensize(3)


wn = turtle.Screen()             # Set up the window and its attributes
wn.bgcolor("lightgreen")
wn.setworldcoordinates(0-border,0-border,40*numbars+border,maxheight+border)


for i in xs:
    fillColor(tess,i)

wn.exitonclick()

1 个答案:

答案 0 :(得分:0)

您需要在选择颜色后绘制列:

def fillColor(t,height):
    if height >=200:
        t.fillcolor("red")
    elif height >= 100 and height < 200:
        t.fillcolor("yellow")
    else:
        t.fillcolor("green")
    drawBar(t,height)

(第一列是黑色的,因为这是默认的填充颜色。)