如何在Python中绘制以元组表示的线列表?

用户名

假设我有一个Python函数,该函数从名为的方法返回检测到的行marching_square()

说,我有以下数据集。我想使用MatPlotLib绘制数据。

元组是形式(x1, y1, x2, y2)

 [(20.0, 10, 20, 10.0), (20, 10.0, 30, 10.0),
(30, 10.0, 40, 10.0), (40.0, 10, 40, 10.0),
(70.0, 10, 70, 10.0), (70, 10.0, 80, 10.0),
(80, 10.0, 90, 10.0), (90.0, 10, 90, 10.0),
(10.0, 20, 10, 20.0), (10.0, 20, 20, 10.0),
(20.0, 10, 10, 20.0), (20, 10.0, 30, 10.0),
(30, 10.0, 40, 10.0), (50.0, 20, 40, 10.0),
(40.0, 10, 50, 20.0), (50, 20.0, 60, 20.0),
(60.0, 20, 70, 10.0), (70.0, 10, 60, 20.0),
(70, 10.0, 80, 10.0), (80, 10.0, 90, 10.0),
(100.0, 20, 90, 10.0), (90.0, 10, 100, 20.0),
(10.0, 20, 10, 20.0), (20.0, 30, 10, 20.0),
(10.0, 20, 20, 30.0), (20.0, 30, 20, 30.0),
(40.0, 30, 40, 30.0), (40.0, 30, 50, 20.0),
(50.0, 20, 40, 30.0), (50, 20.0, 60, 20.0),
(70.0, 30, 60, 20.0), (60.0, 20, 70, 30.0),
(70.0, 30, 70, 30.0), (100.0, 30, 100.0, 20),
(20.0, 30, 20, 30.0), (30.0, 40, 20, 30.0),
(20.0, 30, 30, 40.0), (30.0, 40, 40, 30.0),
(40.0, 30, 30, 40.0), (40.0, 30, 40, 30.0),
(70.0, 30, 70, 30.0), (80.0, 40, 70, 30.0),
(70.0, 30, 80, 40.0), (80, 40.0, 90, 40.0),
(90.0, 40, 100, 30.0), (100.0, 30, 90, 40.0)]

如何才能做到这一点?


example = np.array([
                    [ 0,0, 0, 0, 0, 0,0,0,0,0,0],
                    [ 0,0, 1, 1, 1, 0,0,1,1,1,0 ],
                    [ 0,1, 0, 0, 0, 1,1,0,0,0,1 ],
                    [ 0,0, 1, 0, 1, 0,0,1,0,0,1 ],
                    [ 0,0, 0, 1, 0, 0,0,0,1,1,0 ]
                ]);

x = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
y = [0, 10, 20, 30, 40];

collection = marching_square(x, y, example, 1);

for ln in collection:
    for toup in ln:
        line = list(toup)
        plt.plot(line)
        
plt.show()

在此处输入图片说明

约翰·C

您可以提取x1, y1, x2, y2每个元组的,然后创建两个矩形边缘并填充:

import matplotlib.pyplot as plt

collection = [(20, 10, 20, 10), (20, 10, 30, 10), (30, 10, 40, 10), (40, 10, 40, 10), (70, 10, 70, 10), (70, 10, 80, 10), (80, 10, 90, 10), (90, 10, 90, 10), (10, 20, 10, 20), (10, 20, 20, 10), (20, 10, 10, 20), (20, 10, 30, 10), (30, 10, 40, 10), (50, 20, 40, 10), (40, 10, 50, 20), (50, 20, 60, 20), (60, 20, 70, 10), (70, 10, 60, 20), (70, 10, 80, 10), (80, 10, 90, 10), (100, 20, 90, 10), (90, 10, 100, 20), (10, 20, 10, 20), (20, 30, 10, 20), (10, 20, 20, 30), (20, 30, 20, 30), (40, 30, 40, 30), (40, 30, 50, 20), (50, 20, 40, 30), (50, 20, 60, 20), (70, 30, 60, 20), (60, 20, 70, 30), (70, 30, 70, 30), (100, 30, 100, 20), (20, 30, 20, 30), (30, 40, 20, 30), (20, 30, 30, 40), (30, 40, 40, 30), (40, 30, 30, 40), (40, 30, 40, 30), (70, 30, 70, 30), (80, 40, 70, 30), (70, 30, 80, 40), (80, 40, 90, 40), (90, 40, 100, 30), (100, 30, 90, 40)]

for x1, y1, x2, y2 in collection:
    plt.plot([x1, x1, x2, x2, x1], [y1, y2, y2, y1, y1])
    plt.fill([x1, x1, x2, x2, x1], [y1, y2, y2, y1, y1], alpha=0.3)
plt.show()

矩形

给定的示例似乎包含一些高度为零的矩形。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中绘制元组列表?

如何在Python中读取元组列表

如何在python中聚合元组列表?

如何在Python中搜索元组列表

如何在 Python 中绘制元组列表并将 x 轴更改为另一个数组?

如何在Python中的元组列表中枚举()?

如何在python中返回元组中的对象列表?

如何在python中的列表中添加元组

如何在python中解压缩元组列表?

如何在Python中打印不带括号的元组列表

如何在 Python 中散列列表元组

如何在Python中展平嵌套元组列表?

如何在 Python 中根据元组内容拆分列表

如何在 Python 中创建可更新的元组列表?

如何在python中解压缩元组列表

如何在python中通过子串找到元组列表中的元组?

如何在Python中将元组列表收集到一个元组中?

如何在元组中拆分列表?

如何在python 3.3中将嵌套的列表列表转换为元组列表?

如何在元组列表中修改元组的每个元素

如何在元组列表中连接元组内的元素?

如何在列表中查找重叠的元组并返回重叠的元组

当数据在元组中时,如何在matplotlib中绘制直方图?

如何在Python中对元组列表列表进行平面映射?

如何在Python中创建一个空列表或空列表元组?

如何在 Python 的列表中反转某些元组(用户按列表索引输入)?

Python:如何修改列表中的元组?

在 Python 中,如何在不使用 itertools 的情况下从给定元组列表中组合一组元组?

如何在 pyplot 中绘制坐标列表?