我有以下格式的路径的x,y数据(示例仅用于说明):
seq p1 p2
0 20 2 3
1 20 2 4
2 20 4 4
3 22 5 5
4 22 5 6
5 23 6 2
6 23 6 3
7 23 6 4
每个路径具有多个点,并且它们由seq标识,属于相同seq的点被认为是一个路径,等等。
我已经绘制了这些路径(使用我的真实的数据,格式与上面相同)使用以下代码,并附上了结果:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(12, 8))
for (key, grp) in df.groupby("seq"):
grp.plot(linestyle = "solid", x="p1", y="p2", ax = ax, label = key)
box = ax.get_position()
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title("Paths")
plt.show()
我已经绘制了大约40条路径,现在的问题是我应该如何识别哪个路径是uid 184,或者哪个是uid-194?在图例中,它们都用相同的颜色标记。有没有一种方法,我能够识别每一个路径独特的,也许标签的路径上的某个地方(但这可能会使图形混乱)。
我的第二个问题是我想标记每条路径/轨迹的起点和终点。比如起点可以是绿色,终点可以是红色。例如,在上面的样本df中,对于uid-20,起始点是行0中的(2,3),并且结束点是行2中的(4,4)。请建议一种方法来标记这些起点和终点的每一条路径中的df。
1条答案
按热度按时间gjmwrych1#
我不确定这在多大程度上回答了你的问题,但这是一种使线条颜色符合色彩Map表的方法,它通常可以帮助我更容易地可视化不同的线条及其趋势,但可能不太方便挑出一条线条。
要为第一个和最后一个点添加标记,只需将它们单独列出并为其分配您喜欢的颜色和标记。所以,重写上面的for循环:
如果您希望每个标记具有不同的红色和绿色色调,则可以使用
Reds
和Greens
颜色Map表,例如:在循环中
编辑
处理图例
为了只绘制线而不是端点标记,我们使用了这样一个事实,即我们首先绘制了线,然后是两个标记,这就是如何将图推入轴线队列,因此我们跳过标记并明确告诉图例要考虑哪些线:
使用颜色栏
如果对线条使用颜色Map表,显示颜色条而不是图例会很有用,因此我们使用如下内容: