将线坐标数据转换为元组列表以进行绘图

Convert line coordinate data to list of tuples for plotting

我正在尝试绘制一组形状轮廓。我有一个数据框,其中每个形状都是一行,坐标在列中。我有 10 组 (x,y) 坐标,我希望能够在同一张图上绘制每个形状。

如果将单个形状转换为元组列表,我能够绘制它,但我希望能够自动执行该过程,而不是手动完成。

有没有办法做到这一点或绘制形状轮廓的更好方法?

我生成了一些假数据来显示策略,但您可以先使用 pd.read_csv() 将此 table 读入 pandas。为了简单起见,我只放了4个坐标(X1-4,Y1-4)。

import numpy as np
import pandas as pd

# read in the tabular data
# df = pd.read_csv(filename) 

df = pd.DataFrame({'Species': ['B6','B6','B6','FVBN'],
                   'Age': ['P28', 'P28', 'P28', 'P28'],
                   'Brain': [1,2,3,4],
                  'ID': ['A', 'B', 'C', 'D'],
                  'X1': np.random.randint(0,10,4),
                  'Y1': np.random.randint(0,10,4),
                  'X2': np.random.randint(0,10,4),
                  'Y2': np.random.randint(0,10,4),
                  'X3': np.random.randint(0,10,4),
                  'Y3': np.random.randint(0,10,4),
                  'X4': np.random.randint(0,10,4),
                  'Y4': np.random.randint(0,10,4)}
                  )

然后您可以迭代数据框的行 df,收集 (x,y)(注意我在末尾重复了 X1,Y1 因此多边形闭合)并绘制在现有轴上。

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot()
for i, row in df.iterrows():
    x = row[['X1', 'X2', 'X3', 'X4', 'X1']]
    y = row[['Y1', 'Y2', 'Y3', 'Y4', 'Y1']]
    ax.plot(x,y)
fig.show()