使用 matplotlib 绘制给定笛卡尔坐标的路径

cps*_*arp 2 python plot drawing matplotlib

我是 matplotlib 和 numpy 的新手,我正在尝试将一些数组数据绘制为如下所示:

绘制数组

但目前看起来是这样的:

在此输入图像描述

我的代码非常基本,但基本上上面的图片就是我想要做的。我还不太关心绘制网格线,但绘图应该成比例。我在 mathplotlib 网站上查看了一些示例,但找不到足够相似的东西。我想知道 pyplot 是否不是正确的过程,或者我的数组格式是否不正确?

import numpy as np
from matplotlib import pyplot as plt

data = [(2, 2), (3, 2), (4, 1), (4, 0), (3, 0), (3, 1), (4, 2),
        (4, 3), (4, 4), (3, 3), (3, 4), (2, 4), (2, 3), (1, 4),
        (0, 4), (0, 3), (1, 3), (0, 2), (1, 2), (0, 1), (0, 0),
        (1, 0), (1, 1), (2, 0), (2, 1)]

data = np.asarray(data)
print(data)
plt.ylim(0, 4)
plt.xlim(0, 4)
plt.axis([0, 4, 0, 4])
plt.plot(data)
plt.show()
Run Code Online (Sandbox Code Playgroud)

Jak*_*ark 5

尝试

plt.plot(*data.transpose())
Run Code Online (Sandbox Code Playgroud)

代替

plt.plot(data)
Run Code Online (Sandbox Code Playgroud)

plt.plot函数采用 2 个数组,一个包含所有 x 值,另一个包含所有 y 值。您不能向它传递 x 和 y 值的混合。转置方法将对值重新排序,以便所有 x 值都在一起,所有 y 值都在一起,并且星号*运算符会将这些数组解压缩为两个单独的函数参数。

  • 此外,添加一些关键字参数,例如“marker='.',markersize=10”,以使绘图更像所需的结果。 (2认同)