Мне нужно создать 3D-график в matplotlib. Я читаю значения Z из текстового файла, сформированного как 1D-массив. Эти данные представляют значение для каждой точки на квадрате 50 × 50. Итак, первые 50 значений для точек (0,0), (1,0) ... (49,0), следующие 50 для (0,1), (1,1) и так далее. До сих пор я написал следующий код:Как сделать 3D-график в matplotlib из данных z = f (x, y) читать из файла
import matplotlib.pyplot as plt
import numpy as np
fp=open(path,"r")
a=fp.read()
buffer=""
data=[]
for i in a:
if i != ' ':
buffer=buffer+i
else:
data.append(float(buffer))
buffer=""
fp.close()
values=data[50*50:50*50*2]
x=np.linspace(0,50,50)
y=np.linspace(0,50,50)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(x, y, values)
plt.show()
Но, конечно, он не работает. Я искал в Интернете какие-то подсказки, но без каких-либо успехов. Может ли кто-нибудь показать мне, как я должен это сделать? Я был бы более чем благодарен.
Спасибо за ответ. Я отредактировал исходный код, чтобы значения теперь были одобрены. Я должен был удалить слишком много при редактировании. Проблема в том, что я не знаю, как отформатировать мои данные, чтобы их можно было передать в plot_surface. В этом примере и в любом другом, что я посмотрел, он был просто создан на основе функции (здесь np.sqrt). – rodrykbyk
Не имеет значения, как генерируются данные (Z), данные просто должны иметь ту же форму, что и массивы X и Y. X, Y для 'plot_surface' должны быть сетчатыми сетками (2D-массив того же размера). – Serenity
Хорошо, я сформировал свои данные как 2D-массив, и он сработал: D. Спасибо. – rodrykbyk