如何根据时间绘制唯一行值和跟踪线的 xy 坐标?
how to plot xy coordinates for unique row values and trace line according to time?
说我有:
df ={'animal' : [1, 1, 1, 2, 2, 3, 3, 3, 3],
'x':[76.551, 76.529, 76.336,76.249, 76.077, 77, 77.02, 77.23, 77.733],
'y': [151.933, 151.945, 151.970, 152.004, 152.027, 118.369, 118.615, 118.935, 119.115],
'time': [0, 1, 2, 0, 1, 0, 3,2,5]}
df = pd.DataFrame(df)
我将如何绘制每个独特动物的 xy 坐标?我正在尝试使用 .groupby 和 .unique(不工作)。我可以用以下方法绘制散点图:
plt.scatter(df[['x']], df[['y']])
但是我如何遍历每个独特的动物并绘制它们的坐标(以不同的颜色),然后如何根据顺序时间点在点之间画一条线?
您可以使用:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
cmap = cm.get_cmap('rainbow')
colors = cmap(np.linspace(0.15, 0.85, df['animal'].nunique()))
color_map = dict(zip(df['animal'].unique(), colors))
fig, ax = plt.subplots()
for animal, subdf in df.sort_values('time').groupby('animal'):
ax.plot(subdf['x'], subdf['y'], marker='o', label=animal, c=color_map[animal])
ax.legend()
plt.show()
说我有:
df ={'animal' : [1, 1, 1, 2, 2, 3, 3, 3, 3],
'x':[76.551, 76.529, 76.336,76.249, 76.077, 77, 77.02, 77.23, 77.733],
'y': [151.933, 151.945, 151.970, 152.004, 152.027, 118.369, 118.615, 118.935, 119.115],
'time': [0, 1, 2, 0, 1, 0, 3,2,5]}
df = pd.DataFrame(df)
我将如何绘制每个独特动物的 xy 坐标?我正在尝试使用 .groupby 和 .unique(不工作)。我可以用以下方法绘制散点图:
plt.scatter(df[['x']], df[['y']])
但是我如何遍历每个独特的动物并绘制它们的坐标(以不同的颜色),然后如何根据顺序时间点在点之间画一条线?
您可以使用:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
cmap = cm.get_cmap('rainbow')
colors = cmap(np.linspace(0.15, 0.85, df['animal'].nunique()))
color_map = dict(zip(df['animal'].unique(), colors))
fig, ax = plt.subplots()
for animal, subdf in df.sort_values('time').groupby('animal'):
ax.plot(subdf['x'], subdf['y'], marker='o', label=animal, c=color_map[animal])
ax.legend()
plt.show()