Я пытаюсь построить трехмерную поверхность, построенную таким образом, чтобы она соответствовала некоторым точкам {x, y, z} в python - в идеале что-то вроде Mathematica ListSurfacePlot3D
. До сих пор я пробовал plot_surface
и plot_wireframe
по моим пунктам безрезультатно.
Только оси с помощью plot_surface
. plot_wireframe
дает кучу squigglys, смутно в форме объекта, но не красивый вид, который показан в документации:
Сравните с результатом
ListSurfacePlot3D
:
Вот минимальный рабочий пример, используя файл test.csv. Я разместил здесь:
import csv
from matplotlib import pyplot
import pylab
from mpl_toolkits.mplot3d import Axes3D
hFile = open("test.csv", 'r')
datfile = csv.reader(hFile)
dat = []
for row in datfile:
dat.append(map(float,row))
temp = zip(*(dat))
fig = pylab.figure(figsize=pyplot.figaspect(.96))
ax = Axes3D(fig)
Тогда либо
ax.plot_surface(temp[0], temp[1], temp[2])
pyplot.show()
или
ax.plot_wireframe(temp[0], temp[1], temp[2])
pyplot.show()
Вот как это сделать с помощью plot_surface
:
и используя
plot_wireframe
:
и используя
ListSurfacePlot3D
: