在Matplotlib中绘制嵌套列表

ny6fqffe  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(113)

我试图在matplotlib中将嵌套列表绘制为单独的行,但我的x和y坐标在嵌套列表中。
第一个月
每个嵌套列表都是自己的行,每个嵌套列表都是一个坐标。
我试着使用这篇文章的代码:plot a nested list as multiple trendlines in python,但它没有工作。

2mbi3lxu

2mbi3lxu1#

您可以遍历每条线,然后分别提取x和y数据进行绘图。我使用列表理解进行了提取。你也可以使用numpy。

import matplotlib.pyplot as plt

plt.close("all")

data = [[[0, 0], [0, 0]], 
        [[0, 0], [0, 0]], 
        [[0, 0], [0, 0]], 
        [[0, 0], [5, 7], [0, 0]], 
        [[0, 0], [8, 8], [0, 0]], 
        [[0, 0], [8, 8], [0, 0]], 
        [[0, 0], [16, 5], [0, 0]],
        [[0, 0], [20, 9], [0, 0]], 
        [[0, 0], [4, 8], [20, 9], [16, 5], [0, 0]],
        [[0, 0], [10, 11], [0, 0]]]

fig, ax = plt.subplots()
for n, line in enumerate(data):
    x = [_line[0] for _line in line]
    y = [_line[1] for _line in line]
    ax.plot(x, y, label=n)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.legend()
fig.show()

字符串


的数据

xeufq47z

xeufq47z2#

请尝试使用np.array,参见下文。另外,尽量避免将列表命名为“List”,因为它是一种数据类型,可能会在以后出现问题!

from matplotlib import pyplot as plt
import numpy as np

Lists = [[[0, 0], [0, 0]], [[0, 0], [0, 0]], [[0, 0], [0, 0]], [[0, 0], [5, 7], [0, 0]], [[0, 0], [8, 8], [0, 0]], [[0, 0], [8, 8], [0, 0]], [[0, 0], [16, 5], [0, 0]], [[0, 0], [20, 9], [0, 0]], [[0, 0], [4, 8], [20, 9], [16, 5], [0, 0]], [[0, 0], [10, 11], [0, 0]]]
xcords = []
ycords = []

for i in range(len(Lists)): # ie, [[0,0],[0,0]]
    x = []
    y = []
    for j in range(len(Lists[i])): # ie, [0,0]
        x.append(Lists[i][j][0])
        y.append(Lists[i][j][1])
    xcords.append(x)
    ycords.append(y)

#Now you have xcords and ycords, corresponding lists of lists wherein each sublist makes up a line
print("x:", xcords, "y:", ycords)

xarrays = []
yarrays = []

for k in range(len(xcords)):    #ie, [0, 0]
    xarrays.append(np.array(xcords[k]))
    yarrays.append(np.array(ycords[k]))
    
#See comment below from Jarad 
for i in range(len(xarrays)):
    plt.plot(xarrays[i], yarrays[i])
plt.show()

字符串
x1c 0d1x的数据
这段代码可以进一步简化,但我希望它是一个有用的起点。

相关问题