suavizar matrices hacer graficos grafico graficas graficar grafica dispersion diagrama como animadas python matplotlib 3d plane

python - matrices - Matplotlib: grafica un plano y puntos en 3D simultáneamente



python graficos 2d (2)

Intento trazar simultáneamente un plano y algunos puntos en 3D con Matplotlib. No tengo errores, solo el punto no aparecerá. Puedo trazar en diferentes momentos algunos puntos y planos, pero nunca al mismo tiempo. La parte del código se ve así:

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D point = np.array([1, 2, 3]) normal = np.array([1, 1, 2]) point2 = np.array([10, 50, 50]) # a plane is a*x+b*y+c*z+d=0 # [a,b,c] is the normal. Thus, we have to calculate # d and we''re set d = -point.dot(normal) # create x,y xx, yy = np.meshgrid(range(10), range(10)) # calculate corresponding z z = (-normal[0] * xx - normal[1] * yy - d) * 1. /normal[2] # plot the surface plt3d = plt.figure().gca(projection=''3d'') plt3d.plot_surface(xx, yy, z, alpha=0.2) #and i would like to plot this point : ax.scatter(point2[0] , point2[1] , point2[2], color=''green'') plt.show()


Solo para agregar a la respuesta de @ suever, no hay ninguna razón por la cual no puedas crear los Axes y luego graficar tanto la superficie como los puntos de dispersión en ella. Entonces no hay necesidad de usar ax.hold() :

# Create the figure fig = plt.figure() # Add an axes ax = fig.add_subplot(111,projection=''3d'') # plot the surface ax.plot_surface(xx, yy, z, alpha=0.2) # and plot the point ax.scatter(point2[0] , point2[1] , point2[2], color=''green'')


Tendrá que indicar a los ejes que desea agregar nuevos trazados a los trazados actuales en los ejes en lugar de sobreescribirlos. Para hacer esto, necesitarás usar axes.hold(True)

# plot the surface plt3d = plt.figure().gca(projection=''3d'') plt3d.plot_surface(xx, yy, z, alpha=0.2) # Ensure that the next plot doesn''t overwrite the first plot ax = plt.gca() ax.hold(True) ax.scatter(points2[0], point2[1], point2[2], color=''green'')

ACTUALIZAR

Como @tcaswell señaló en los comentarios, están considerando suspender el soporte para hold . Como resultado, un mejor enfoque puede ser usar los ejes directamente para agregar más trazados como en la respuesta de @ tom.