【问题标题】:Connect data points in the order they were individually plotted - matplotlib按照单独绘制的顺序连接数据点 - matplotlib
【发布时间】:2016-01-16 08:28:16
【问题描述】:

我正在尝试连接单独绘制的点,但我想按照它们绘制的顺序连接它们。我有一个数字列表,指的是一组点(有序对)。该列表说明点的绘制顺序。

这些点在字典P 中。所以假设P[1]P[2]P[3]。然后list = (2, 1, 3)。我想绘制它,以便一条线将P[2] 连接到P[1]P[3]。其中P[i] = (x, y) 是一些带有x 坐标x 和y 坐标y 的连音。

正如我现在所拥有的,我正在使用循环绘制点。这有效,但它不连接点。任何帮助都会很棒!谢谢。

x=[-4, 2, -1, 5]
y=[-3, -2, 4, 2]
n = 3 #number of cities

P = dict()
P_0 = (x[0],y[0])

for i in range (1,n):
    P[i] = (x[i],y[i])

route = (2,1,3)
plt.plot([P_0[0]],[P_0[1]])
for k in range (0,n-1):
    plt.plot([P[route[k]][0]],[P[route[k]][1]])

【问题讨论】:

  • 对不起,n 应该等于 4,而不是 3

标签: python for-loop matplotlib plot line


【解决方案1】:

在调用 plot 时,您需要将 x 坐标作为列表提供,将 y 坐标作为单独的列表提供:

import matplotlib.pyplot as plt

x=[-4, 2, -1, 5]
y=[-3, -2, 4, 2]

plt.plot(x,y,'b-')

【讨论】:

  • 这会导致线路以错误的顺序连接。有没有办法重新排列列表本身中点的顺序。但是假设我有很多点,我不能手动完成。
【解决方案2】:

这应该是一个合适的解决方案。

xnew=[x[i] for i in route]
ynew=[y[i] for i in route]

plt.plot(x,y)

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2022-11-30
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多