[英]Line plot with marker at final point
我正在尋找繪制在重力作用下的粒子點的圖表,目前正在生成如下 plot:
但是,我想制作一個更清晰的 plot 顯示粒子路徑的線和最后一點的標記,指示它們的最終位置,如下面的 plot 所示:
我當前繪制每一行的代碼行是:
plt.plot(N_pos[:,0] * AU, N_pos[:,1], 'o')
這只是從列出每個粒子的 x、y 和 z 坐標的數組中繪制 x 和 y 坐標
最簡單的方法是從代碼中刪除“o”標記,而只是 plot 是每個粒子的最后一個 position,但這次使用標記? 如果是這樣,我如何使線條和最終標記的顏色相同,而不是像下面這樣?:
for i in range(len(all_positions[0])):
N_pos = all_positions[:,i]
plt.plot(N_pos[:,0] , N_pos[:,1])
plt.plot(N_pos[:,0][-1] , N_pos[:,1][-1], 'o')
當沒有給出明確的顏色時, plt.plot()
在默認 colors 列表中循環。 一個簡單的解決方案是從線圖中提取顏色並將其作為點的顏色提供:
import numpy as np
import matplotlib.pyplot as plt
a = np.random.randn(200, 10, 1).cumsum(axis=0) * 0.1
all_positions = np.dstack([np.sin(a), np.cos(a)]).cumsum(axis=0)
for i in range(len(all_positions[0])):
N_pos = all_positions[:, i]
line, = plt.plot(N_pos[:, 0], N_pos[:, 1])
plt.plot(N_pos[:, 0][-1], N_pos[:, 1][-1], 'o', color=line.get_color())
plt.show()
另一種選擇是創建散點圖 plot,並通過數組設置點的大小。 例如, N-1
次1
和一次20
:
for i in range(len(all_positions[0])):
N_pos = all_positions[:, i]
plt.scatter(N_pos[:, 0], N_pos[:, 1], s=np.append(np.ones(len(N_pos) - 1), 20))
您可以定義自己的調色板並為每條軌跡賦予其獨特的(ish)顏色:
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()
您可以在第二輪重置顏色循環儀和 plot 標記(不推薦,只是為了說明循環儀屬性):
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.