Pregunta

Estoy tratando de representar gráficamente una estructura metálica sólido de revolución. Estoy siguiendo el ejemplo de una esfera aquí pero yo soy un poco a pérdida. He simplificado todo abajo, pero ahora estoy atrapado en un error. También estoy mirando a los argumentos de las funciones que se describen aquí , pero a menos que esté malentendido algo, este código debería estar bien. Me doy cuenta de que lo que estoy tratando de dibujar aquí es una línea y no una forma, pero no entiendo por qué no puedo utilizar este método para dibujar todos modos. Estoy intentando conseguir este ejemplo tan simple como sea posible para que pueda pasar a la representación gráfica de un sólido real. Aquí está:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plot
import numpy
import pylab

fig = plot.figure()
ax = Axes3D(fig)

n = numpy.linspace(0, 100)

x = n
y = x**2
z = 1
ax.plot_wireframe(x, y, z)

plot.show()

Aquí está el error:

Traceback (most recent call last):
  File "test.py", line 14, in <module>
    ax.plot_wireframe(x, y, z)
  File "/usr/lib/pymodules/python2.6/mpl_toolkits/mplot3d/axes3d.py", line 687, in plot_wireframe
    rows, cols = Z.shape
AttributeError: 'int' object has no attribute 'shape'
¿Fue útil?

Solución

Cuando matplotlib escribe argumentos de datos en mayúsculas, eso significa que es esperar que las matrices de datos. Puede utilizar la función meshgrid (véase el ejemplo de la para mplot3d ) para generar la rejilla.

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plot
import numpy
import pylab

fig = plot.figure()
ax = Axes3D(fig)

n = numpy.linspace(0, 100)

x = n
y = x**2

X, Y = numpy.meshgrid(x, y)
Z = numpy.ones_like( X )

ax.plot_wireframe(X, Y, Z)

Tenga en cuenta que en el ejemplo que diste, los puntos de malla para la esfera se construyen utilizando un .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top