You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使Matplotlib 3D绘图完全填满显示窗口?

如何让Matplotlib 3D绘图完全填满显示窗口

问题分析

你之前的操作要么只是等比例放大了画布(空白占比没变),要么用负边距强制拉伸导致绘图被截断——核心原因是Matplotlib的3D轴默认会预留视角空间,单纯调整画布尺寸或硬拉边距都会打破自动适配逻辑。

解决步骤

1. 匹配屏幕尺寸设置画布

先根据你的屏幕分辨率配置画布,确保DPI和屏幕一致,避免绘图模糊:

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

# 获取系统默认DPI,也可以手动指定(比如你的屏幕是144DPI就写144)
screen_dpi = plt.rcParams['figure.dpi']
# 按屏幕分辨率设置画布(比如1920x1080的屏幕直接用这个尺寸)
fig_width = 1920 / screen_dpi
fig_height = 1080 / screen_dpi
fig = plt.figure(figsize=(fig_width, fig_height), dpi=screen_dpi)
ax = fig.add_subplot(projection='3d')

2. 消除所有子图边距

把画布的上下左右边距全设为0,让3D轴直接占满画布空间:

fig.subplots_adjust(left=0, right=1, bottom=0, top=1, wspace=0, hspace=0)

3. 调整3D轴比例与视角(关键)

别用修改投影矩阵的方式硬拉伸,改用set_box_aspect设置轴的长宽高比例,再用view_init调整视角,让内容刚好适配画布:

# 按你的数据调整轴比例,示例为X/Y/Z轴1:1:0.5
ax.set_box_aspect([1, 1, 0.5])
# 调整仰角和方位角,找到最合适的显示视角
ax.view_init(elev=30, azim=45)

4. 可选:隐藏冗余元素省空间

如果不需要坐标轴标签、刻度,直接隐藏它们,能释放更多空间给绘图内容:

ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
ax.set_xlabel('')
ax.set_ylabel('')
ax.set_zlabel('')

完整示例代码

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

# 生成示例3D曲面数据
X = np.linspace(-5, 5, 100)
Y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 配置画布
screen_dpi = plt.rcParams['figure.dpi']
fig_width = 1920 / screen_dpi
fig_height = 1080 / screen_dpi
fig = plt.figure(figsize=(fig_width, fig_height), dpi=screen_dpi)
ax = fig.add_subplot(projection='3d')

# 消除边距
fig.subplots_adjust(left=0, right=1, bottom=0, top=1)

# 绘制3D曲面
ax.plot_surface(X, Y, Z, cmap='viridis')

# 适配画布空间
ax.set_box_aspect([1, 1, 0.6])
ax.view_init(elev=25, azim=30)

# 隐藏冗余坐标轴元素
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
ax.set_xlabel('')
ax.set_ylabel('')
ax.set_zlabel('')

plt.show()

为什么之前的方法失效?

  • 单纯改figsize/DPI:只是等比例放大了画布和绘图,但3D轴预留的空白比例没变,所以还是会有大量空白。
  • 负边距+修改get_proj:负边距让轴超出了画布边界,导致内容被截断;修改投影矩阵的拉伸会破坏Matplotlib的自动适配逻辑,强制变形后内容必然溢出。

内容的提问来源于stack exchange,提问作者user24353751

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:21:15