我对三个参数进行了蒙特卡罗反演,现在我试图使用Matplotlib将它们绘制成三维图形。其中一个参数(Mo
)的值在10^15到10^20之间变化,我感兴趣的是绘制好的解(蓝点),它在10^17到10^19之间变化。我将参数(Mo
)绘制在z轴上,如果只将该轴设置为对数,则会更好。我尝试了在其他论坛上看到的不同选项,但情节不能正常工作。..可能是Matplotlib中有一个bug,或者我没有正确使用命令。
这是具有线性轴且不限制z轴的原始图:
如果我尝试将z轴设置为对数(通过添加线ax.set_zscale('log')
),则所得缩放似乎无法正常工作,因为每个幂的排序不是等距的:
最后,如果我试图将z轴限制在我感兴趣的值的范围内(通过简单地添加线ax.set_zlim3d(1e17,1e19)
),而不是将点切割到该轴的定义范围内,它们似乎从图形中消失:
这是该图的全部代码。这并不复杂。任何帮助或建议将是非常欢迎的。
fig = figure(2)
ax = fig.add_subplot(111, projection='3d')
# Plot models:
p = ax.scatter(Vr,Dm,Mo,c=misfits,vmin=0.3,vmax=1,s=2,edgecolor='none',marker='o')
fig.colorbar(p, ticks=arange(0.3,1+0.1,0.1))
# Plot settings:
ax.set_xlim3d(0,max(Vr))
ax.set_ylim3d(0,max(Dm))
ax.set_zlim3d(1e17,1e19)
ax.set_zscale('log')
ax.set_xlabel("$V_{r}$ [$km/s$]")
ax.set_ylabel("$D_{max}$ [$m$]")
ax.set_zlabel("$M_{o}$ [$Nm$]")
ax.invert_xaxis()
jet()
title("Kinematic parameters and $M_{o}$")
1条答案
按热度按时间sbdsn5lh1#
这可能与this issue有关。建议用对数标度绘制
np.log10(z)
,而不是z
。您可能需要将代码更改为:我也建议使用
tight_layout()
。至少在我的机器上,没有它,轴标签不能正确显示。下面是一些假数据的图片: