设置带有3D子图的图形大小。

17

我有一个图形,想在两个子图中绘制3D散点图和正常图。 我使用以下代码:

fig = plt.figure(1)
ax = fig.add_subplot(211, projection='3d')
ax2 = fig.add_subplot(212)

然后我使用ax和ax2在正确的位置绘制我的数据。但是我得到的图太小了,怎么才能让它变大呢?在第一行添加figsize=(w, h)没有任何效果,如果我将其添加到第二或第三行中会导致错误:

AttributeError: 'Axes3DSubplot'对象没有'set_figsize'属性


https://dev59.com/pGsz5IYBdhLWcg3wDz0A - Srivatsan
1个回答

18

在第一行中添加figsize=(w,h)应该可以解决问题。你说的“它没有效果”是什么意思?

例如:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig1=plt.figure(figsize=(8,5))
ax11=fig1.add_subplot(211,projection='3d')
ax12=fig1.add_subplot(212)

fig1.get_size_inches()
# array([ 8.,  5.])

fig2=plt.figure(figsize=(4,4))
ax21=fig1.add_subplot(211,projection='3d')
ax22=fig1.add_subplot(212)

fig2.get_size_inches()
# array([ 4.,  4.])

fig1.savefig('fig1.png',dpi=300)
fig2.savefig('fig2.png',dpi=300)

将图像保存为300dpi的png文件后:

$ identify fig1.png
>>> fig1.png PNG 2400x1500 2400x1500+0+0 8-bit sRGB 118KB 0.000u 0:00.000

$ identify fig2.png
>>> fig2.png PNG 1200x1200 1200x1200+0+0 8-bit sRGB 86.9KB 0.000u 0:00.000

1
我有同样的问题。更改 figsize 没有效果。诀窍是增加 dpi - Fanchen Bao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接