Ich denke, Sie stellen hier einige Fragen. Ich werde versuchen, die grundlegendste Frage zu beantworten: Laden Sie Ihre CSV-Daten in Python und zeichnen Sie dann eine grundlegende Oberflächendarstellung.
Beachten Sie, dass Sie im Allgemeinen eine NxN-Matrix mit Z-Werten für ein Diagramm benötigen, bei dem X und Y Vektoren der Länge N sind. Dies ist sinnvoll, da jeder Punkt (x, y) einen Z-Wert benötigt und N x N (x) vorhanden ist y) Punkte. Ich werde dir zwei Wege zeigen. Sobald Sie diese haben, sind Sie zumindest in der Lage, Ihren Plot anhand der Dokumentation und anderer Beispiele aus dem Web anzupassen.
Diese Antwort setzt voraus, dass Sie Python 3 und eine aktuelle Version von Matplotlib und Numpy verwenden . (Numpy ist ein numerisches Python-Paket, das üblicherweise in Python-Distributionen enthalten ist, z. B. Anaconda.) Die Syntax sollte sich jedoch in älteren Versionen nicht sehr unterscheiden.
Machen Sie zuerst die notwendigen Importe:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D
Für den Fall, dass Sie 3 Spalten mit 1d-Daten haben - x, y und z:
DataAll1D = np.loadtxt("datacsv_1d.csv", delimiter=",") # create 2d x,y grid (both X and Y will be 2d) X, Y = np.meshgrid(DataAll1D[:,0], DataAll1D[:,1]) # repeat Z to make it a 2d grid Z = np.tile(DataAll1D[:,2], (len(DataAll1D[:,2]), 1)) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, Z, cmap='ocean') plt.show()
Beachten Sie, dass Sie in np.loadtxt ein beliebiges Trennzeichen festlegen können, z. B. '' für ein Leerzeichen.
Für den Fall, dass Sie 2 Spalten mit 1d-Daten haben - x und y - und eine 2d-Matrix mit z-Daten:
DataX_Y_1D = np.loadtxt("datacsv_1d_xy.csv", delimiter=",") # create 2d x,y grid (both X and Y will be 2d) X, Y = np.meshgrid(DataX_Y_1D[:,0], DataX_Y_1D[:,1]) # get 2D z data Z = np.loadtxt("datacsv_2d_Z.csv", delimiter=",") fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, Z, cmap='ocean') plt.show()
Hier finden Sie einen Link zu einem weiteren guten Tutorial zu diesem Thema:
https://jakevdp.github.io/PythonDataScienceHandbook/04.12-three-dimensional-plotting.html
Bearbeiten: Für den Fall, dass Sie alle erforderlichen Datenpunkte in 3 Spalten (X, Y, Z) haben, plot_trisurf
ist dies das, was Sie brauchen. Ein einfaches Beispiel finden Sie in meiner Antwort zu Stack Overflow: https://stackoverflow.com/questions/39240327/3d-surface-plot-using-matplotlib-in-python/52630484#52630484