用PyX绘制矩形系列

2024-04-27 17:01:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PyX并尝试创建一系列矩形,这样每个下一个矩形都必须从最后一个矩形结束的地方开始。代码是这样的:

//索引为i的循环开始

back_pos = dep_list[i-1]
front_pos = list[i]
c.stroke(path.rect(back_pos, 0, front_pos, 1))

以下是列表中的一些值。基本上,这个列表包含数字的递增顺序。在

^{pr2}$

但当我执行的时候,我得到了如下图片 enter image description here

有人能告诉我我做错了什么吗?我怎样才能修好它呢?在

我改变了代码中的Y轴,这样矩形的起点和终点都是可见的。 谢谢:)


Tags: path代码posrect列表stroke顺序地方
1条回答
网友
1楼 · 发布于 2024-04-27 17:01:39

您写的dep_list包含一个递增的数字列表,因此我猜它包含了矩形的结束位置。另外,请注意rect的第三个参数是矩形的宽度,而不是结束位置。因此,完整的代码可以看起来像:

from pyx import *

dep_list = [0.04, 0.21, 0.21, 0.57, 0.72]

c = canvas.canvas()

back_pos = 0
for i in range(len(dep_list)):
    if i == 0:
        width = dep_list[i]
    else:
        width = dep_list[i] - dep_list[i-1]
    c.stroke(path.rect(back_pos, 0, width, 1))
    back_pos += width

c.writePDFfile()

导致:

example output

有很多不同的选择。作为一个简单的例子,您可以在循环的最后一行将back_pos设置为dep_list[i]。不管怎样,我试着用一种非常不成熟和明确的方式来写它。我希望这有帮助。在

PS:您可以在rect的第二个参数中使用i*0.1而不是{},以使矩形垂直移动。编辑:输出变成:

enter image description here

PPS:由于您的列表包含0.21两次,因此一个矩形的宽度为零。在

相关问题 更多 >