Python: mplot3d, построение графика - PullRequest
2 голосов
/ 10 декабря 2010

Я пытаюсь построить каркасное тело революции.Я следую примеру для сферы здесь , но я немного растерялся.Я все упростил, но теперь застрял на ошибке.Я также смотрю на аргументы функции, описанные здесь , но если я что-то не так понимаю, этот код должен быть в порядкеЯ понимаю, что здесь я пытаюсь нарисовать линию, а не форму, но я не понимаю, почему я не могу использовать этот метод для рисования в любом случае.Я пытаюсь сделать этот пример как можно более простым, чтобы перейти к графику реального тела.Вот оно:

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

Вот ошибка:

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'

1 Ответ

3 голосов
/ 10 декабря 2010

Когда matplotlib записывает аргументы данных заглавными буквами, это означает, что он ожидает матрицы данных.Вы можете использовать функцию meshgrid (см. Пример для mplot3d) для создания сетки.

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)

Обратите внимание, что в приведенном вами примере точки сетки длясфера построена с использованием внешнего произведения .

...