matplotlib 将三维图拟合到固定大小的图形中

elcex8rz  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(122)

这个问题与Set size of matplotlib figure with 3d subplots有关。
这里有一个例子代码。

fig = plt.figure()
fig.set_size_inches(10, 4)
ax = fig.gca(projection='3d')

上面的代码是我在2019年用于创建3D图的代码。
从matplotlib 3.4开始,使用关键字参数调用gca()已被弃用。
此外,3D轴不再适合图形尺寸。
下面是matplotlib 3.4.3的一个例子。

fig = plt.figure()
fig.set_size_inches(10, 4)
ax = plt.subplot(1, 1, 1)
fig = plt.figure()
fig.set_size_inches(10, 4)
ax = plt.subplot(1, 1, 1, projection='3d')

结果如下。

尽管旧版本的matplotlib可以自动将3D轴拟合到图形中(很抱歉,我没有保存确切的版本号),但当前的matplotlib-3.4.3版本不再将3D轴拟合到图形大小中了。
我知道我可以按照set matplotlib 3d plot aspect ratio?中的建议使用Axes3D.set_box_aspect()。但是,很难找到精确的长宽值来使轴适合于体形大小。autoscale()在这种情况下也没有帮助。
总之,问题是:是否有任何方法(1)自动将三维轴拟合到图形中(或改变三维轴的大小)(2)并防止边缘空间?

d6kp6zgx

d6kp6zgx1#

回答我自己的问题:
因为这个问题并不吸引用户,所以在这里我为其他遭受同样问题困扰的人发布了一个简单(但不恰当)的答案。
解决这个问题的最简单方法是将matplotlib降级到3.2(在我的例子中是3.2.2)。
结果如下所示。

相关问题