gpt4 book ai didi

python - 如何在 Python 中以相同比例在同一图形上绘制两个 3D 矩阵图

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:43 25 4
gpt4 key购买 nike

我有两个矩阵,我想在同一图的两个子图上绘制它们对应的两个 3D 图,具有相同的 z 轴。

到目前为止,这是我的代码:

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

def myplot(matrix1, matrix2):
mymin = np.min(np.array([np.min(matrix1), np.min(matrix2)]))
mymax = np.max(np.array([np.max(matrix1), np.max(matrix2)]))

xsize, ysize = matrix1.shape
x = np.arange(0, ysize, 1)
y = np.arange(0, xsize, 1)

xs, ys = np.meshgrid(x, y)
z1 = matrix1
z2 = matrix2

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1 = Axes3D(fig)
ax1.plot_surface(xs, ys, z1, rstride=1, cstride=1)
ax2 = Axes3D(fig)
ax2.plot_surface(xs, ys, z2, rstride=1, cstride=1)
plt.tight_layout
plt.show()

mat1 = np.random.random(size = (10, 10))
mat2 = np.random.random(size = (10, 10))

myplot(mat1, mat2)
  • 为什么我只能看到一个 3D 图?
  • 如何在两个图中使用相同的 z 轴?

最佳答案

我认为你需要生成子图

见下图(我也改变了颜色)

def myplot(matrix1, matrix2):
mymin = np.min(np.array([np.min(matrix1), np.min(matrix2)]))
mymax = np.max(np.array([np.max(matrix1), np.max(matrix2)]))

xsize, ysize = matrix1.shape
x = np.arange(0, ysize, 1)
y = np.arange(0, xsize, 1)

xs, ys = np.meshgrid(x, y)
z1 = matrix1
z2 = matrix2
fig=plt.figure()
ax1 = fig.add_subplot(2, 1, 1, projection='3d')
ax1.plot_surface(xs, ys, z1,color="blue",alpha=0.5,rstride=1, cstride=1)
ax2 = fig.add_subplot(2, 1, 2, projection='3d')
ax2.plot_surface(xs, ys, z2,color="green",alpha=0.5, rstride=1, cstride=1)
plt.tight_layout
plt.show()

mat1 = np.random.random(size = (10, 10))
mat2 = np.random.random(size = (10, 10))

myplot(mat1, mat2)

enter image description here

编辑:要将 myminmymax 强加为两个 z 轴的限制,请使用

ax1.set_zlim(mymin, mymax)
ax2.set_zlim(mymin, mymax)

关于python - 如何在 Python 中以相同比例在同一图形上绘制两个 3D 矩阵图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43275798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com