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

Matplotlib中3D曲面图尺寸无法调整及子图使用问题求助

解决3D曲面图尺寸不生效与子图空图问题

问题原因

  1. 初始代码未将ax与创建的fig绑定,导致figsize设置完全无效。
  2. 使用add_subplot(211)时,211代表2行1列的子图布局,因此会自动生成第二个空的子图。

正确写法一:用plt.subplots一次性创建

直接创建包含3D投影子图的画布,同时指定尺寸:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

z = arr  # 你的数据数组
y = np.arange(len(z))
x = np.arange(len(z[0]))
x, y = np.meshgrid(x, y)

# 创建画布和3D子图,同时设置尺寸
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw={'projection': '3d'})

ax.plot_surface(x, y, z, cmap=cm.coolwarm)
ax.set_xlabel("Bonus to AC")
ax.set_ylabel("Current AC")
ax.set_zlabel("Reduction in Damage")

plt.show()

正确写法二:用figure+add_subplot(111)

如果习惯分开创建画布和子图,使用111指定1行1列的唯一子图,避免空图:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

z = arr
y = np.arange(len(z))
x = np.arange(len(z[0]))
x, y = np.meshgrid(x, y)

fig = plt.figure(figsize=(10, 10))
# 创建唯一的3D子图
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(x, y, z, cmap=cm.coolwarm)
ax.set_xlabel("Bonus to AC")
ax.set_ylabel("Current AC")
ax.set_zlabel("Reduction in Damage")

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:31:16