如何避免Julia中3D绘图轴压缩,使立方体显示符合几何形态?
问题描述
我正在使用Julia绘制两个相邻的立方体,通过绘制立方体顶点间的直线实现,当前代码如下:
p = Plots.scatter(camera=(-240,10), legend=false) #axis=([], false)) plot!([7.5, 6.5, 6.5, 7.5, 7.5, 7.5, 7.5, 6.5, 6.5, 7.5], [1.5, 1.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5], [1.0, 1.0, 2.0, 2.0, 1.0, 1.0, 2.0, 2.0, 1.0, 1.0], linewidth=1, lc=:black) plot!([6.5, 6.5], [1.5, 2.5], [1.0, 1.0], linewidth=1, lc=:black) plot!([6.5, 6.5], [1.5, 2.5], [2.0, 2.0], linewidth=1, lc=:black) plot!([7.5, 7.5], [1.5, 2.5], [2.0, 2.0], linewidth=1, lc=:black) plot!([7.5, 6.5, 6.5, 7.5, 7.5, 7.5, 7.5, 6.5, 6.5, 7.5], [2.5, 2.5, 2.5, 2.5, 2.5, 3.5, 3.5, 3.5, 3.5, 3.5], [1.0, 1.0, 2.0, 2.0, 1.0, 1.0, 2.0, 2.0, 1.0, 1.0], linewidth=1, lc=:black) plot!([6.5, 6.5], [2.5, 3.5], [1.0, 1.0], linewidth=1, lc=:black) plot!([6.5, 6.5], [2.5, 3.5], [2.0, 2.0], linewidth=1, lc=:black) plot!([7.5, 7.5], [2.5, 3.5], [2.0, 2.0], linewidth=1, lc=:black) display(p)
当前绘图结果中轴长度比例失调,立方体看起来更像长方体,请问如何设置轴间距以获得更符合几何真实感的显示?
解决方案
在Plots.jl中,要让3D绘图保持真实几何比例,可通过以下两种方式设置:
启用等比例轴
在初始化绘图对象时添加aspect_ratio=:equal参数,强制三个坐标轴使用相同的比例。修改后的初始化代码如下:p = Plots.scatter(camera=(-240,10), legend=false, aspect_ratio=:equal)手动指定轴比例
若需自定义比例关系,可传入三元组aspect_ratio=(1,1,1),同样能让立方体各边显示一致:p = Plots.scatter(camera=(-240,10), legend=false, aspect_ratio=(1,1,1))
也可在后续的plot!调用中补充设置:
plot!(aspect_ratio=:equal)
修改后,立方体的长宽高会按照真实几何比例显示,不会再呈现长方体的失真效果。
内容的提问来源于stack exchange,提问作者WaterDrop
相关产品推荐
相关产品推荐

