Python - 绘制密度图中的轴descale

时间:2016-04-10 20:54:36

标签: python matplotlib plot density-plot

我有这个初步情节。

enter image description here

以下是此代码,

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')

现在,当绘制密度表示时,我的结果是成功的,给我这个,但是我的轴上的单位已经完全改变了,但它仍然保留了初始绘图的形状。

enter image description here

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')

关键是当以日志形式传递两个数组xy时,我将在数组中获得NaN值。然后我通过np.isfinite模块运行它们,然后调整两个数组的大小,使它们的形状相同。

这里有什么让我的价值观在我的轴上发生变化?

1 个答案:

答案 0 :(得分:1)

我不了解整个序列,但看起来轴的不同之处在于您使用

logx = np.log(x)
logy = np.log(y)
第一个例子中的

X = np.log10(x)
Y = np.log10(y)

在第二个。