我已经创建了我自己的MCMC仿射不变算法使用二维,斜率和y截距,也使用4个步行者。我在csv文件中有所有的数据,其中有两列m和b,然后对于四行中的每一行,它将代表第一个walker。例如,在下面的csv文件中,第一个walker在第0、第4、第8和第12行中表示,而第二个walker在第1、第5、第9和第13行中表示,依此类推。下面是它的一个片段:
我想创建一个类似意大利面条或进化图https://python-graph-gallery.com/124-spaghetti-plot/的图,其中每个步行者都用自己的线来表示,而不是用m和b的整列作为自己的线来表示。到目前为止,我有一个按数据帧按行和列分隔walker的函数,但是我很难将这些值绘制为多行。你知道吗
def make_evo_plot(df):
w1m = df['m'][0::4] #walker1 m
w1b = df['b'][0::4] #walker1 b
w2m = df['m'][1::4] #walker2 m
w2b = df['b'][1::4] #walker2 b
w3m = df['m'][2::4] #walker3 m
w3b = df['b'][2::4] #walker3 b
w4m = df['m'][3::4] #walker4 m
w4b = df['b'][3::4] #walker4 b
fig,ax = plt.subplots()
plt.plot(w1m)
plt.plot(w2m)
plt.plot(w3m)
plt.plot(w4m)
ax.plot(w1b,w2b,w3b,w4b)
plt.show()
非常感谢您对绘制数据的任何帮助!!你知道吗
更新:
我试着做下面的代码,但是我得到了ValueError: x and y must have same first dimension, but have shapes (0,) and (8750,)
def make_evo_plot(df):
w1m = df['m'][0::4] #walker1 m
w1b = df['b'][0::4] #walker1 b
w2m = df['m'][1::4] #walker2 m
w2b = df['b'][1::4] #walker2 b
w3m = df['m'][2::4] #walker3 m
w3b = df['b'][2::4] #walker3 b
w4m = df['m'][3::4] #walker4 m
w4b = df['b'][3::4] #walker4 b
fig,ax = plt.subplots()
plt.plot(w1m)
plt.plot(w2m)
plt.plot(w3m)
plt.plot(w4m)
ax.plot(w1b,w2b,w3b,w4b)
plt.show()
要绘制坡度/截距的演变,只需为轴定义一个序列,如
x=np.arange(0,100,5)
,然后使用ax.plot(x, w1m)
相关问题 更多 >
编程相关推荐