首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PyX绘制矩形系列图

用PyX绘制矩形系列图
EN

Stack Overflow用户
提问于 2015-02-18 17:23:10
回答 1查看 341关注 0票数 0

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

//索引i的循环的开始

代码语言:javascript
复制
back_pos = dep_list[i-1]
front_pos = list[i]
c.stroke(path.rect(back_pos, 0, front_pos, 1))

以下是列表中的一些值。基本上,这个列表包含了越来越多的数字顺序。

代码语言:javascript
复制
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

但是当我执行它时,我得到了如下所示的东西

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 08:41:40

您编写的dep_list包含一个增加数字的列表,因此我猜它包含矩形的末端位置。另外,请注意,rect的第三个参数是矩形的宽度,而不是末端位置。因此,完整的代码如下所示:

代码语言:javascript
复制
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:您可以在i*0.1的第二个参数中使用rect而不是0来使rects垂直移动。编辑:输出变成:

当您的列表包含两次0.21时,一个矩形的宽度为零。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28589840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档