Python 终点有标记的线图

Python 终点有标记的线图,python,matplotlib,graph,Python,Matplotlib,Graph,我希望绘制一张图,绘制重力作用下的粒子点,目前正在绘制一张图,如下所示: 但是,我希望生成一个更清晰的图,显示粒子路径的线和终点处的标记,指示它们的最终位置,如下图所示: 我当前绘制每行代码的代码行是: plt.plot(N_pos[:,0] * AU, N_pos[:,1], 'o') 这只是从列出每个粒子的x、y和z坐标的数组中绘制x和y坐标 最简单的方法是从代码中删除“o”标记并再次绘制每个粒子的最后位置,但这次使用标记吗?如果是,如何使线条和最终标记颜色相同,而不是像下面这样 当没有

我希望绘制一张图,绘制重力作用下的粒子点,目前正在绘制一张图,如下所示:

但是,我希望生成一个更清晰的图,显示粒子路径的线和终点处的标记,指示它们的最终位置,如下图所示:

我当前绘制每行代码的代码行是:

plt.plot(N_pos[:,0] * AU, N_pos[:,1], 'o')
这只是从列出每个粒子的x、y和z坐标的数组中绘制x和y坐标

最简单的方法是从代码中删除“o”标记并再次绘制每个粒子的最后位置,但这次使用标记吗?如果是,如何使线条和最终标记颜色相同,而不是像下面这样


当没有给出显式颜色时,plt.plot会在默认颜色列表中循环。 一个简单的解决方案是从线形图中提取颜色,并将其作为点的颜色提供:

将numpy作为np导入 将matplotlib.pyplot作为plt导入 a=np.random.randn200,10,1.cumsumaxis=0*0.1 所有位置=np.dstack[np.sina,np.cosa].cumsumaxis=0 对于处于范围内所有位置[0]的i: N_pos=所有位置[:,i] 行,=plt.plot N_pos[:,0],N_pos[:,1] plt.plot N_pos[:,0][1],N_pos[:,1][1],'o',color=line.get\u color 节目 另一种选择是创建散点图,并通过阵列设置点的大小。例如,N-1乘以1和1乘以20:

对于处于范围内所有位置[0]的i: N_pos=所有位置[:,i] plt.scatterN_pos[:,0],N_pos[:,1],s=np.appendnp.oneslenN_pos-1,20
当没有给出显式颜色时,plt.plot会在默认颜色列表中循环。 一个简单的解决方案是从线形图中提取颜色,并将其作为点的颜色提供:

将numpy作为np导入 将matplotlib.pyplot作为plt导入 a=np.random.randn200,10,1.cumsumaxis=0*0.1 所有位置=np.dstack[np.sina,np.cosa].cumsumaxis=0 对于处于范围内所有位置[0]的i: N_pos=所有位置[:,i] 行,=plt.plot N_pos[:,0],N_pos[:,1] plt.plot N_pos[:,0][1],N_pos[:,1][1],'o',color=line.get\u color 节目 另一种选择是创建散点图,并通过阵列设置点的大小。例如,N-1乘以1和1乘以20:

对于处于范围内所有位置[0]的i: N_pos=所有位置[:,i] plt.scatterN_pos[:,0],N_pos[:,1],s=np.appendnp.oneslenN_pos-1,20 您可以定义自己的轨迹,并为每条轨迹指定其独特的颜色:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

np.random.random(123)
all_positions = np.random.randn(10, 5, 2).cumsum(axis=0) #shamelessly stolen from JohanC
l = all_positions.shape[1]

my_cmap = cm.plasma

for i in range(l):
    N_pos = all_positions[:,i]
    plt.plot(N_pos[:,0], N_pos[:,1], c= my_cmap(i/l))
    plt.plot(N_pos[:,0][-1], N_pos[:,1][-1], 'o', color=my_cmap(i/l))

plt.show()
输出:

您可以重置颜色循环器,并在不推荐的第二轮中绘制标记,仅用于说明:

样本输出:

您可以定义自己的轨迹,并为每条轨迹指定独特的颜色:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

np.random.random(123)
all_positions = np.random.randn(10, 5, 2).cumsum(axis=0) #shamelessly stolen from JohanC
l = all_positions.shape[1]

my_cmap = cm.plasma

for i in range(l):
    N_pos = all_positions[:,i]
    plt.plot(N_pos[:,0], N_pos[:,1], c= my_cmap(i/l))
    plt.plot(N_pos[:,0][-1], N_pos[:,1][-1], 'o', color=my_cmap(i/l))

plt.show()
输出:

您可以重置颜色循环器,并在不推荐的第二轮中绘制标记,仅用于说明:

样本输出:

我刚刚更新了玩具数据,以获得一个随机行走,其中方向以小的随机增量变化……这不仅聪明而且漂亮。我希望我能再次向上投票。我刚刚更新了玩具数据,以获得一个随机行走,其中方向以小的随机增量变化……这不仅聪明而且漂亮。我希望我能再次投票。
import numpy as np
import matplotlib.pyplot as plt

np.random.random(123)
all_positions = np.random.randn(10, 5, 2).cumsum(axis=0)
l = all_positions.shape[1]

for i in range(l):
    N_pos = all_positions[:,i]
    plt.plot(N_pos[:,0], N_pos[:,1])

plt.gca().set_prop_cycle(None)
    
for i in range(l):
    N_pos = all_positions[:,i]
    plt.plot(N_pos[:,0][-1], N_pos[:,1][-1], 'o')

plt.show()