【问题标题】:Matplotlib 3D Scatter - Equal Aspect RatioMatplotlib 3D Scatter - 等长宽比
【发布时间】:2013-04-23 16:39:11
【问题描述】:

我正在尝试使用 matplotlib 制作 3D 散点图。我遇到的问题是该图没有在所有轴对之间使用 1:1 的纵横比。有人知道如何解决这个问题吗?

我的代码如下所示:

from matplotlib.pyplot import *
from mpl_toolkits.mplot3d import *

figure(1, figsize=(7,7))
ax = gca(projection='3d')
ax.scatter(FH[:,0],FH[:,1],FH[:,2],s=0.5)
show()

我已经尝试将“aspect=1”之类的 kwargs 添加到脚本的各个部分(即 - scatter()、figure()、ax()),但到目前为止没有任何效果。

任何帮助将不胜感激!

谢谢!

【问题讨论】:

  • 我还没有尝试过整个子图例程。这是个好主意,虽然我不知道它是否适用于 3D 散点图。
  • 好的,我在你链接的页面上尝试了一些东西,它们都是关于改变窗口本身的纵横比,而不是实际的绘图轴。有没有办法调整 3D 散点图的轴范围?我正在为所有三个轴绘制 -x 到 x。
  • 我也遇到过这个:stackoverflow.com/questions/8130823/… 但同样,这只会改变窗口的纵横比......

标签: python matplotlib scatter mplot3d


【解决方案1】:

好的 - 我已经解决了我的问题。我在这里找到它:set matplotlib 3d plot aspect ratio?(在我忽略的帖子中)。

我的问题实际上是如何设置我的情节的边界框(或范围),而不是如何设置纵横比。诀窍是,如果您知道要用于绘制数据的边界框的范围,请像这样绘制不可见点:

fig=figure(1, figsize=(7,7))
ax = fig.gca(projection='3d')
ax.scatter(FH[:,0],FH[:,1],FH[:,2],s=0.5)

# plotting white points
MAX = 3 # I wanted -3 to 3 in each direction
for direction in (-1, 1):
    for point in diag(direction * MAX * array([1,1,1])):
        ax.plot([point[0]], [point[1]], [point[2]], 'w')

show()

希望这会有所帮助。我无法为我的 3D 散点图找到类似函数/kwarg 的范围,这对我来说有点奇怪,但我想这并不意味着该机制不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2018-10-08
    • 1970-01-01
    • 2017-08-23
    • 2020-01-25
    • 2017-07-16
    相关资源
    最近更新 更多