Похоже, по умолчанию mplot3d оставит довольно много места в верхней и нижней части очень высокого сюжета. Но вы можете обмануть его, заполнив это пространство, используя fig.subplots_adjust
, и расширяя верх и низ от нормальной области графика (т. Е. top > 1
и bottom < 0
). Некоторые проб и ошибок здесь, вероятно, необходимы для вашего конкретного участка.
Я создал некоторые случайные массивы для x, y и z с ограничениями, подобными вашему сюжету, и нашел, что параметры ниже (bottom=-0.15
, top = 1.2
) работают нормально.
Вы также можете изменить ax.view_init
, чтобы установить хороший угол обзора.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from numpy import random
# Make some random data with similar limits to the OP's example
x,y,z=random.rand(3,100)
z*=250
y*=800
y+=900
x*=350
x+=1200
fig=plt.figure(figsize=(4,35))
# Set the bottom and top outside the actual figure limits,
# to stretch the 3D axis
fig.subplots_adjust(bottom=-0.15,top=1.2)
ax = fig.add_subplot(111, projection='3d')
# Change the viewing angle to an agreeable one
ax.view_init(2,None)
ax.scatter(x, y, z, zdir='z', c= 'red')
plt.savefig("plot.png")
[/g0]