gpt4 book ai didi

python - Matplotlib 中 3-D 散点图中的 z 轴缩放和限制

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:47 24 4
gpt4 key购买 nike

我对三个参数进行了蒙特卡罗反演,现在我正尝试使用 Matplotlib 在 3-D 图形中绘制它们。其中一个参数 (Mo) 的值大约在 10^15 到 10^20 之间变化,我有兴趣绘制好的解决方案(蓝点),从 10^17 变化到 10^19。我在 z 轴上绘制参数 (Mo),最好仅将此轴设置为与重要值范围成对数。我尝试了在其他论坛上看到的不同选项,但绘图无法正常工作...也许 Matplotlib 中存在错误,或者我没有正确使用命令。

这是带有线性轴且不限制 z 轴的原始图形: enter image description here

如果我尝试将 z 轴设置为对数(通过添加 ax.set_zscale('log') 行),生成的缩放比例似乎无法正常工作,因为每个幂不是等间距的: enter image description here

最后,如果我尝试将 z 轴限制在我感兴趣的值范围内(通过简单地添加行 ax.set_zlim3d(1e17,1e19)),而不是将点切割到该轴上的定义范围内,它们似乎从图中消失了: enter image description here

这是这个图的完整代码。这并不复杂。非常欢迎任何帮助或建议。

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}$")

最佳答案

这可能与 this issue 有关.建议使用对数刻度绘制 np.log10(z) 而不是 z。您可能希望将代码更改为:

fig = figure(2)
ax = fig.add_subplot(111, projection='3d')

# Plot models:
p = ax.scatter(Vr,Dm,np.log10(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(17,19)
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}$")

我还建议使用 tight_layout()。至少在我的机器上,轴标签没有它就无法正确显示。这是带有一些假数据的图片:

enter image description here

关于python - Matplotlib 中 3-D 散点图中的 z 轴缩放和限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com