[英]Python - Plot axes descale in density plot
我有這個初始情節。
這是代碼
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
模塊運行它們兩個,然后調整兩個數組的大小,以使它們都具有相同的形狀。
這是什么使我的值在我的軸上改變?
我不了解整個序列,但看起來軸的不同之處在於您使用了
logx = np.log(x)
logy = np.log(y)
在第一個示例中,以及
X = np.log10(x)
Y = np.log10(y)
在第二。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.