Ich muss ein 3D-Diagramm in Matplotlib erstellen. Ich lese Z-Werte aus einer Textdatei, die als 1D-Array formatiert ist. Diese Daten repräsentieren den Wert für jeden Punkt auf einem 50x50-Quadrat. Also sind die ersten 50 Werte für Punkte (0,0), (1,0) .. (49,0), die nächsten 50 sind für (0,1), (1,1) und so weiter. Bisher habe ich folgenden Code geschrieben:So erstellen Sie ein 3D-Diagramm in Matplotlib aus Daten z = f (x, y) aus der Datei lesen
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()
Aber natürlich funktioniert es nicht. Ich suchte im Internet nach Hinweisen, aber ohne Erfolg. Kann mir jemand zeigen, wie ich es machen soll? Ich wäre mehr als dankbar.
Dank für die Antwort. Ich habe den Quellcode bearbeitet, so dass die Werte jetzt in Ordnung sind. Ich muss bei der Bearbeitung zu viel gelöscht haben. Das Problem ist, dass ich nicht weiß, wie ich meine Daten formatiere, damit sie an plot_surface übergeben werden können. In diesem Beispiel und in jedem anderen, das ich angeschaut habe, wurde es nur basierend auf der Funktion generiert (np.sqrt hier). – rodrykbyk
Es spielt keine Rolle, wie Daten (Z) erzeugt werden, Ihre Daten müssen nur die gleiche Form wie X- und Y-Arrays haben. X, Y für 'plot_surface' müssen ein Mesh-Grid sein (2D-Array der gleichen Größe). – Serenity
Okay, ich habe meine Daten als 2D-Array formatiert und es hat funktioniert: D. Vielen Dank. – rodrykbyk