我有这个初步情节。
以下是此代码,
x = subhalos['SubhaloVelDisp']
y = (subhalos['SubhaloBHMass'] * 1e10 / 0.704) # in units of M_sol h^-1
logx = np.log(x)
logy = np.log(y)
plt.plot(logx, logy, '.')
plt.ylabel('$\log(M_{BH}$ / M$_{\odot}$)' )
plt.xlabel(' $\log(\sigma_{1D}$ / km s$^{-1}$)')
plt.title('$M_{BH}-\sigma$ relation')
现在,当绘制密度表示时,我的结果是成功的,给我这个,但是我的轴上的单位已经完全改变了,但它仍然保留了初始绘图的形状。
x = subhalos['SubhaloVelDisp']
y = subhalos['SubhaloBHMass'] * 1e10 / 0.704 # in units of M_sol h^-1
X = np.log10(x)
Y = np.log10(y)
x1 = X[np.isfinite(X)]
y1 = Y[np.isfinite(Y)]
x1.resize(y1.shape)
xy = np.vstack([x1,y1])
z = stats.gaussian_kde(xy)(xy)
idx = z.argsort()
x,y,z = x1[idx],y1[idx],z[idx]
fig, ax = plt.subplots()
ax.scatter(X,Y,c=z, s=25, edgecolor='')
plt.ylabel('$\log(M_{BH}$ / M$_{\odot}$)' )
plt.xlabel(' $\log(\sigma_{1D}$ / km s$^{-1}$)')
plt.title('$M_{BH}-\sigma$ relation')
关键是当以日志形式传递两个数组x
和y
时,我将在数组中获得NaN值。然后我通过np.isfinite
模块运行它们,然后调整两个数组的大小,使它们的形状相同。
这里有什么让我的价值观在我的轴上发生变化?
答案 0 :(得分:1)
我不了解整个序列,但看起来轴的不同之处在于您使用
logx = np.log(x)
logy = np.log(y)
第一个例子中的和
X = np.log10(x)
Y = np.log10(y)
在第二个。