Plotten von 3-Tupel-Datenpunkten in einem Oberflächen- / Kontur-Plot mit matplotlib

Ich habe einige Oberflächen-Daten, die von einem externen Programm als XYZ-Werte erzeugt werden. Ich möchte die folgenden Graphen erstellen, mit matplotlib:

  • Oberflächengrundstück
  • Konturdiagramm
  • Kontur-Plot mit einem Flächen-Plot überlagert

Ich habe einige Beispiele für die Plotten von Oberflächen und Konturen in Matplotlib betrachtet – aber die Z-Werte scheinen eine Funktion von X und Y zu sein, dh Y ~ f (X, Y).

Ich nehme an, dass ich irgendwie meine Y-Variablen umwandeln muss, aber ich habe noch kein Beispiel gesehen, das zeigt, wie man das macht.

Also, meine Frage ist dies: gegeben eine Menge von (X, Y, Z) Punkte, wie kann ich generieren Surface und Kontur Plots aus diesen Daten?

BTW, nur um zu klären, ich möchte keine Scatter-Plots erstellen. Auch wenn ich matplotlib im Titel erwähnt habe, bin ich nicht abgeneigt, rpy (2) zu benutzen, wenn das mir erlaubt, diese Charts zu erstellen.

3 Solutions collect form web for “Plotten von 3-Tupel-Datenpunkten in einem Oberflächen- / Kontur-Plot mit matplotlib”

Für eine Kontur-Plot müssen Sie interpolieren Sie Ihre Daten zu einem regelmäßigen Raster http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data

Ein kurzes Beispiel:

>>> xi = linspace(min(X), max(X)) >>> yi = linspace(min(Y), max(Y)) >>> zi = griddata(X, Y, Z, xi, yi) >>> contour(xi, yi, zi) 

Für die oberfläche http://matplotlib.sourceforge.net/examples/mplot3d/surface3d_demo.html

 >>> from mpl_toolkits.mplot3d import Axes3D >>> fig = figure() >>> ax = Axes3D(fig) >>> xim, yim = meshgrid(xi, yi) >>> ax.plot_surface(xim, yim, zi) >>> show() >>> help(meshgrid(x, y)) Return coordinate matrices from two coordinate vectors. [...] Examples -------- >>> X, Y = np.meshgrid([1,2,3], [4,5,6,7]) >>> X array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]) >>> Y array([[4, 4, 4], [5, 5, 5], [6, 6, 6], [7, 7, 7]]) 

Kontur in 3D http://matplotlib.sourceforge.net/examples/mplot3d/contour3d_demo.html

 >>> fig = figure() >>> ax = Axes3D(fig) >>> ax.contour(xi, yi, zi) # ax.contourf for filled contours >>> show() 

Konturplot mit rpy2 + ggplot2:

 from rpy2.robjects.lib.ggplot2 import ggplot, aes_string, geom_contour from rpy2.robjects.vectors import DataFrame # Assume that data are in a .csv file with three columns X,Y,and Z # read data from the file dataf = DataFrame.from_csv('mydata.csv') p = ggplot(dataf) + \ geom_contour(aes_string(x = 'X', y = 'Y', z = 'Z')) p.plot() 

Flächenplot mit rpy2 + gitter:

 from rpy2.robjects.packages import importr from rpy2.robjects.vectors import DataFrame from rpy2.robjects import Formula lattice = importr('lattice') rprint = robjects.globalenv.get("print") # Assume that data are in a .csv file with three columns X,Y,and Z # read data from the file dataf = DataFrame.from_csv('mydata.csv') p = lattice.wireframe(Formula('Z ~ X * Y'), shade = True, data = dataf) rprint(p) 

Mit Pandas und numpy zu importieren und zu manipulieren Daten, mit matplot.pylot.contourf, um das Bild zu zeichnen

 import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.mlab import griddata PATH='/YOUR/CSV/FILE' df=pd.read_csv(PATH) #Get the original data x=df['COLUMNNE'] y=df['COLUMNTWO'] z=df['COLUMNTHREE'] #Through the unstructured data get the structured data by interpolation xi = np.linspace(x.min()-1, x.max()+1, 100) yi = np.linspace(y.min()-1, y.max()+1, 100) zi = griddata(x, y, z, xi, yi, interp='linear') #Plot the contour mapping and edit the parameter setting according to your data (http://matplotlib.org/api/pyplot_api.html?highlight=contourf#matplotlib.pyplot.contourf) CS = plt.contourf(xi, yi, zi, 5, levels=[0,50,100,1000],colors=['b','y','r'],vmax=abs(zi).max(), vmin=-abs(zi).max()) plt.colorbar() #Save the mapping and save the image plt.savefig('/PATH/OF/IMAGE.png') plt.show() 

Beispielbild

  • Pandas und rpy2: Warum funktioniert ezANOVA über robjects.r aber nicht robjects.packages.importr?
  • Rpy2-Fehler wac-a-mol: R_USER nicht definiert
  • Übersetzer benannte Listenvektoren von R in rpy2 in Python?
  • Migration einer logistischen Regression von R nach rpy2
  • Übergeben einer Python-Variablen auf R mit rpy2
  • Übergeben von Vektoren und params von Python zu R-Funktionen
  • Python rpy2 und quantmod Beispiele
  • Konvertieren von Pythonobjekten für rpy2
  • Das Ausführen von rpy2 parallel mit Multiprocessing hebt komische Ausnahme an, die nicht gefangen werden kann
  • Rpy2, R und Ubuntu 12.04 - Ungültige substring -fopenmp
  • Passliste von python zu R bis rpy2
  • Python ist die beste Programmiersprache der Welt.