在龟中标记细分

时间:2014-04-04 07:03:31

标签: python label labels turtle-graphics

以下是使用Python的Turtle。

我试图将预设标签(位于列表中)放在我在Turtle上制作的饼图上相应部分旁边。这些数字改变了图表,所以我需要标签不在一个地方,而是根据饼图的每个部分的大小来移动。

这就是我被困的地方。我应该def()所以每组列表只用一个函数改变吗? 到目前为止,我有这个:

groups = ['Group A', 'Group B', 'Group C', 'Group D']
percentages = [0.2, 0.4, 0.15, 0.25]

def label():
    penup()
    for percent in percentages:
        setheading((percentages[0] * 360)/2)
        forward(radius + 20)
        color("Black")
        write(groups[0], False, "left", font=("Arial", 15, "bold"))
        end_fill() 
label()

我计划为每组提供4个。但如果团体中有超过4个怎么办?我认为它循环,因为它每20个像素打印第一个组名(组A)。推进正确的方向将非常感激!

图片显示:http://i.imgur.com/eCGdq3E.png

3 个答案:

答案 0 :(得分:0)

嗯,它在你的循环结束时沿着对角线方向前进 - 你从来没有把乌龟GOTO放在圆圈的中间。

setheading不会让你的乌龟朝着你希望的方向前进 - 在360度圆上设置点到度数。 0 =东,90 =北,180 =西,270 =南。

你想让你的乌龟转为每个百分比值。我会通过在newheading=0开始前设置一个值,例如for percent in percentages:来做到这一点 这样您可以将((percentages[0] * 360)/2)更改为((percentages[newheading]*360)/2) 当然,您需要知道每次通过循环时如何继续向该newheading值添加值。希望这个建议可以让你思考如何使这项工作。

答案 1 :(得分:0)

关于第一篇文章。如何让所有群组同时显示群组= ['群组A','群组B','群组C','群组d']

答案 2 :(得分:0)

我将通过拍摄整个饼图来解决标签问题,因为我认为不应该有单独的percentagesfrom turtle import Turtle, Screen from operator import itemgetter FONT = ("Arial", 15, "bold") LABEL_OFFSET = 1.33 pie_slices = {'Group A': 0.2, 'Group B': 0.4, 'Group C': 0.15, 'Group D': 0.25} def pie_chart(turtle, radius, slices, font): # Pass 1: the pie itself x, y = turtle.position() turtle.penup() turtle.sety(y - radius) turtle.pendown() turtle.begin_fill() turtle.circle(radius, steps=60) # steps setting improves smaller charts turtle.end_fill() turtle.penup() # Pass 2: the slices for _, percentage in slices: turtle.circle(radius, extent=360 * percentage) position = turtle.position() turtle.pendown() turtle.goto(x, y) turtle.penup() turtle.goto(position) # Pass 3: the labels radius *= LABEL_OFFSET turtle.sety(y - radius) for label, percentage in slices: turtle.circle(radius, extent=180 * percentage) # should do smarter label alignment to reduce LABEL_OFFSET turtle.write(label, align="center", font=font) turtle.circle(radius, extent=180 * percentage) yertle = Turtle(visible=False) yertle.color("black", "orange") yertle.speed("fastest") yertle.width(2) # pie_chart() expects list of pairs, sort our dictionary by slice size into list sorted_slices = sorted(pie_slices.items(), key=itemgetter(1), reverse=True) pie_chart(yertle, 150, sorted_slices, FONT) yertle.hideturtle() screen = Screen() screen.exitonclick() 列表,而是一个组合数据结构标签和切片百分比。下面以三个过程绘制饼图 - 通过将切片分成两半并在中心标记,将标签写在半径更大的假想圆的边缘上:

$(document).on('click','.item-next',function(){
  alert();
});

此代码的行为在某种程度上取决于您如何设置切片(排序,未排序)以及如何预先设置龟(笔颜色,填充颜色,宽度,初始位置,速度,可见性等)< / p>

输出

enter image description here