Matplotlib Axes3D Ratio Savefig



我对matplotlib有一点问题。 在显示 (plt.show((( 2D 或 3D 可视化时,大小分配很好。 但如果在保存期间是 3D 可视化,则不会发生(Fig.savefig(...(( 最简单的方法是显示结果。
你有什么想法吗?

文件: 2DVisualizationFile 3DVisualizationFile

蟒蛇脚本

# coding: utf8
import os
import numpy as np
from mpl_toolkits.mplot3d import Axes3D  # noqa: F401 unused import
import matplotlib.pyplot as plt
DPI = 150
FIG_SIZE = (8.60, 5.40)
mu = 1
sigma = 0.75
S = np.random.normal(mu, sigma, size=(1000,3))
# 2D Visualisation
Fig = plt.figure(figsize = FIG_SIZE, dpi = DPI)
ax = Fig.add_subplot(111)
ax.scatter(S[:,0], S[:,1], alpha=0.5)
print(Fig.get_size_inches())
plt.show()
Fig.savefig(os.path.dirname(__file__) + "/Samples_Test.png", transparent = False, bbox_inches = 'tight', dpi=DPI)
plt.close('all')
# 3D Visualisation
Fig = plt.figure(figsize = FIG_SIZE, dpi = DPI)
ax = Fig.add_subplot(111, projection='3d')
ax.scatter(S[:,0], S[:,1], S[:,2], alpha=0.5)
print(Fig.get_size_inches())
plt.show()
Fig.savefig(os.path.dirname(__file__) + "/Samples_Test2.png", transparent = False, bbox_inches = 'tight', dpi=DPI)
plt.close('all')

问题是,bbox_inches = 'tight'可以在保存过程中更改图形大小,请参阅 matplotlib.pyplot.savefig。

相反,使用bbox_inches = None,保存的图形将具有正确的大小。

import matplotlib.pyplot as plt
FIG_SIZE = (6, 3)
fig = plt.figure(figsize = FIG_SIZE)
ax = fig.add_subplot(111, projection='3d')
ax.plot([0,1], [0,1], [0,1])
plt.show()
fig.savefig("bbox_inches_tight.png", bbox_inches = 'tight')
fig.savefig("bbox_inches_None.png", bbox_inches = None)
plt.close('all')

最新更新