当我试图用背景数据和拟合线创建一个半对数图时,拟合线看起来完全不稳定。你知道吗
import numpy as np
import matplotlib.pyplot as plt
k=0
for i in np.arange(0,len(emceeredshifts),7):
zbin=emceeredshifts[i+1]
lowradius = radius[(redshift <= (zbin + halfwidth)) & (redshift >= (zbin - halfwidth)) & (radius > 1) & (radius<20) &(mass>10.5)].flatten()
lowmass = mass[(redshift <= (zbin + halfwidth)) & (redshift >= (zbin - halfwidth)) & (radius > 1) & (radius<20)&(mass>10.5)].flatten()
if len(lowradius)>0:
lowfit = np.polyfit(lowmass, lowradius, 1)
lowlin,lowinter=np.poly1d(lowfit)
lowbestfit = lowinter + lowlin * (lowmass )
plt.plot( lowmass, lowbestfit, color=rainbowcolors[k], label=str(zbin))
plt.scatter( lowmass, lowradius, color=rainbowcolors[k], marker='.', alpha=.2, edgecolor='none')
k+=1
plt.legend(loc='lower right')
plt.title("Galaxy radius vs mass\nlinear mcmc mass predictions")
plt.xlabel("Log $M_\odot$")
plt.ylabel("Physical radius (kpc)")
plt.ylim(2,15)
plt.xlim(10.6,11.8)
plt.yscale('log')
plt.show()
这是错误的半日志结果。
这是我去掉原木刻度后得到的结果。当y轴是线性的时,直线看起来像直线,数据看起来像数据。
出什么问题了?你知道吗
你看过用来绘制这些线的数组的内容了吗?我怀疑它们没有被分类,所以mpl在点之间来回划一条线。在线性空间中,这相当于沿着同一条线绘制,所以你看不到它,但在对数空间中,这是明显的,因为曲线。你知道吗
我认为这个最小的例子说明了问题:
相关问题 更多 >
编程相关推荐