以下是使用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)。推进正确的方向将非常感激!
答案 0 :(得分:0)
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)
我将通过拍摄整个饼图来解决标签问题,因为我认为不应该有单独的percentages
和from 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>
输出