matplotlib 绘制(x,y)点到点连接

oug3syen  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(85)

我试图绘制一个点到点线图在python.我的数据是在一个pandas框架如下..

df = pd.DataFrame({
'x_coordinate': [0, 0, 0, 0, 1, 1,-1,-1,-2,0],
'y_coordinate': [0, 2, 1, 3,  3, 1,1,-2,2,-1],
})
print(df)

      x_coordinate  y_coordinate
   0             0             0
   1             0             2
   2             0             1
   3             0             3
   4             1             3
   5             1             1
   6            -1             1
   7            -1            -2
   8            -2             2
   9             0            -1

当我画这个图的时候,它是按照DF中的顺序从一点连接到另一点。

df.plot('x_coordinate','y_coordinate')

但是,有没有办法,我可以在它旁边画一个顺序号?我的意思是它运行的顺序。比如说1表示从(0,0)到(0,2)的第一个连接,2表示从(0,2)到(0,1)的第一个连接,等等?

w6lpcovy

w6lpcovy1#

图是OK。如果你想检查每个顶点是如何绘制的,你需要修改数据。这里是修改后的数据(仅x)和图。

df = pd.DataFrame({
'x_coordinate': [0.1, 0.2, 0.3, 0.4, 1.5, 1.6,-1.7,-1.8,-2.9,0.1],
'y_coordinate': [0, 2, 1, 3,  3, 1,1,-2,2,-1],
})

编辑

对于您的新请求,代码修改如下(完整的可运行代码)。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({
'x_coordinate': [0.1, 0.2, 0.3, 0.4, 1.5, 1.6,-1.7,-1.8,-2.9,0.1],
'y_coordinate': [0, 2, 1, 3,  3, 1,1,-2,2,-1],
})

fig = plt.figure(figsize=(6,5))
ax1 = fig.add_subplot(1, 1, 1)

df.plot('x_coordinate','y_coordinate', legend=False, ax=ax1)

for ea in zip(np.array((range(len(df)))), df.x_coordinate.values, df.y_coordinate.values):
    text, x, y = "P"+str(ea[0]), ea[1], ea[2]
    ax1.annotate(text, (x,y))

mwg9r5ms

mwg9r5ms2#

我发现了一个更简单的方法..想分享..

fig, ax = plt.subplots()
df.plot('x_coordinate','y_coordinate',ax=ax)
for k, v in df[['x_coordinate','y_coordinate']].iterrows():
    ax.annotate('p'+str(k+1), v)
plt.show()

相关问题