Domanda

Sto cercando di rappresentare graficamente una wireframe solido di rivoluzione. Sto seguendo l'esempio per una sfera qui ma io sono un po 'in perdita. Ho semplificato tutto giù, ma ora sto bloccato su un errore. Sto anche guardando gli argomenti della funzione descritta qui , ma a meno che io sono incomprensione qualcosa, questo codice dovrebbe essere a posto. Mi rendo conto che quello che sto cercando di disegnare qui è una linea e non una forma, ma non capisco perché non posso usare questo metodo per disegnare comunque. Sto cercando di ottenere questo esempio più semplice possibile in modo da poter passare a rappresentare graficamente un solido reale. Eccolo:

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()

Ecco l'errore:

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'
È stato utile?

Soluzione

Quando matplotlib scrive argomenti dati in lettere maiuscole, questo significa che è in attesa di matrici di dati. È possibile utilizzare la funzione meshgrid (vedi la esempio per mplot3d ) per generare la griglia.

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)

Si noti che l'esempio che hai dato, i punti di maglia per la sfera sono costruiti utilizzando un .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top