使用 PyX 绘制一系列矩形
Drawing series of rectangles with PyX
我正在使用 PyX 并尝试创建一系列矩形,以便每个下一个矩形都必须从最后一个矩形结束的地方开始。代码如下:
//循环开始,索引为 i
back_pos = dep_list[i-1]
front_pos = list[i]
c.stroke(path.rect(back_pos, 0, front_pos, 1))
以下是列表中的一些值。基本上列表包含数字的递增顺序。
back_pos = 0.04 front_pos = 0.04
back_pos = 0.04 front_pos = 0.21
back_pos = 0.21 front_pos = 0.21
back_pos = 0.21 front_pos = 0.57
back_pos = 0.57 front_pos = 0.72
但是当我执行它时,我得到了如下图所示的东西
有人可以告诉我我做错了什么吗?我该如何解决?
p.s 我更改了该代码中的 Y 轴,以便可以看到矩形的起点和终点。
谢谢:)
您写的 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()
导致:
有很多不同的选择。作为一个简单的示例,您可以在循环的最后一行将 back_pos
设置为 dep_list[i]
。不管怎样,我试着用一种非常不花哨和明确的方式来写它。希望对您有所帮助。
PS:您可以在 rect
的第二个参数处使用 i*0.1
而不是 0
来垂直移动矩形。编辑:输出变为:
PPS:由于您的列表包含 0.21
两次,因此一个矩形的宽度为零。
我正在使用 PyX 并尝试创建一系列矩形,以便每个下一个矩形都必须从最后一个矩形结束的地方开始。代码如下:
//循环开始,索引为 i
back_pos = dep_list[i-1]
front_pos = list[i]
c.stroke(path.rect(back_pos, 0, front_pos, 1))
以下是列表中的一些值。基本上列表包含数字的递增顺序。
back_pos = 0.04 front_pos = 0.04
back_pos = 0.04 front_pos = 0.21
back_pos = 0.21 front_pos = 0.21
back_pos = 0.21 front_pos = 0.57
back_pos = 0.57 front_pos = 0.72
但是当我执行它时,我得到了如下图所示的东西
有人可以告诉我我做错了什么吗?我该如何解决?
p.s 我更改了该代码中的 Y 轴,以便可以看到矩形的起点和终点。 谢谢:)
您写的 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()
导致:
有很多不同的选择。作为一个简单的示例,您可以在循环的最后一行将 back_pos
设置为 dep_list[i]
。不管怎样,我试着用一种非常不花哨和明确的方式来写它。希望对您有所帮助。
PS:您可以在 rect
的第二个参数处使用 i*0.1
而不是 0
来垂直移动矩形。编辑:输出变为:
PPS:由于您的列表包含 0.21
两次,因此一个矩形的宽度为零。