Cómo trazar dos diagtwigs 3D de matrices en la misma figura con la misma escala en Python

Tengo dos matrices y me gustaría tener sus dos plots 3D correspondientes en dos subplots en la misma figura, con el mismo eje z.

Este es mi código hasta ahora:

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) 
  • ¿Por qué solo veo una ttwig 3D?
  • ¿Cómo puedo tener el mismo eje z en ambas gráficas?

Creo que necesitas generar las sub plots.

Ver la ttwig a continuación (también he cambiado el color)

 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) 

introduzca la descripción de la imagen aquí

Edición: para imponer mymin y mymax como límites de los dos ejes z, use

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