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

求助:创建含3D与2D绘图的复合布局

求助:创建含3D与2D绘图的复合布局

嘿,这个复合布局的需求有点意思,我来给你一步步实现它!咱们用Matplotlib来搞定这个混合3D/2D的绘图布局,核心思路是利用网格布局让两个3D图在中间区域重叠,再通过调整坐标轴范围让它们各显示一半,完美实现你要的A/B共享区域效果。

实现步骤与代码示例

首先,先导入需要的库:

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

接下来创建画布,然后用3x3的网格布局来划分区域:左边列留给3D图(A、A/B、B),右侧两列放2D图(C-H)。关键是让A和B在中间的左列区域重叠,再通过坐标轴范围控制显示各自的一半。

# 创建画布
fig = plt.figure(figsize=(10, 8))

# ---------------------- 左边的3D图 ----------------------
# A图:占据左列的上两个网格位置(第1、4位),3D投影
ax_A = fig.add_subplot(3, 3, (1, 4), projection='3d')
# B图:占据左列的下两个网格位置(第4、7位),和A在中间位置重叠
ax_B = fig.add_subplot(3, 3, (4, 7), projection='3d')

# ---------------------- 右边的2D图 ----------------------
ax_C = fig.add_subplot(3, 3, 2)
ax_D = fig.add_subplot(3, 3, 3)
ax_E = fig.add_subplot(3, 3, 5)
ax_F = fig.add_subplot(3, 3, 6)
ax_G = fig.add_subplot(3, 3, 8)
ax_H = fig.add_subplot(3, 3, 9)

# ---------------------- 填充绘图内容 ----------------------
# 生成3D测试数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z_A = np.sin(np.sqrt(X**2 + Y**2))
Z_B = np.cos(np.sqrt(X**2 + Y**2))

# 绘制A图,只显示右半部分(x≥0),实现A/B区域的A部分
ax_A.plot_surface(X, Y, Z_A, cmap='viridis')
ax_A.set_xlim(0, 5)
ax_A.set_title('A')

# 绘制B图,只显示左半部分(x≤0),实现A/B区域的B部分
ax_B.plot_surface(X, Y, Z_B, cmap='plasma')
ax_B.set_xlim(-5, 0)
ax_B.set_title('B')

# 绘制2D图示例
ax_C.plot(x, np.sin(x))
ax_C.set_title('C')
ax_D.plot(x, np.cos(x))
ax_D.set_title('D')
ax_E.plot(x, x**2)
ax_E.set_title('E')
ax_F.plot(x, x**3)
ax_F.set_title('F')
ax_G.plot(x, np.exp(x))
ax_G.set_title('G')
ax_H.plot(x, np.log(x + 6))
ax_H.set_title('H')

# 调整布局,避免标题和坐标轴重叠
plt.tight_layout()
plt.show()

关键细节说明

  • 3D图的重叠与分割:通过让ax_A和ax_B共享中间的左列网格,再分别设置x轴范围,让A只显示右半、B只显示左半,这样中间的A/B区域就会同时显示两个图的各一半。
  • 如果想要A/B区域是上下分割(A占上半,B占下半),只需要把x轴范围改成y轴范围即可:ax_A.set_ylim(0,5),ax_B.set_ylim(-5,0)。
  • 右侧的2D图刚好填满3x3网格的右侧两列,完美对应你要的CD、EF、GH每行两个图的布局。

备注:内容来源于stack exchange,提问作者blahblah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:14:33