将线坐标数据转换为元组列表以进行绘图
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()
我正在尝试绘制一组形状轮廓。我有一个数据框,其中每个形状都是一行,坐标在列中。我有 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()