2013-01-02 9 views
7

Ich versuche einige Daten in ein imshow() Plot zu schreiben. Mein Problem ist, dass die Daten nicht als MxN-Array, sondern als 3xN-Array (X- und Y-Koordinate und Wert) kommen. Die Punkte sind NICHT als regelmäßiges Gitter angeordnet, sondern liegen innerhalb von [xmin, xmax, ymin und ymax] = [- pi/2, pi/2,0, 3,5].matplotlib imshow() mit unregelmäßig verteilten Datenpunkten

In [117]: shape(data) 
Out[117]: (3L, 102906L) 

Wie kann ich einen schönes Bild Plot von diesen Daten? Vielen Dank für jede Hilfe.

btw die Daten darstellt Temperaturwerte an der Oberfläche einer Stange als eine Funktion der axialen und azimutalen Position, denke an ein CFD-Mesh.

+1

hm schließlich interp2d wird die Arbeit tun ... – user1805743

+1

mal sehen Wenn Sie Ihr Problem gelöst, können Sie bitte Ihre eigene Frage beantworten und die Antwort akzeptieren? – tacaswell

Antwort

12

Ich empfehle die Verwendung der Griddata-Methode für die Interpolation. Eine Probe wäre:

import numpy as np 
from matplotlib.mlab import griddata 
import matplotlib.pyplot as plt 

xs0 = np.random.random((1000)) * np.pi - np.pi/2 
ys0 = np.random.random((1000)) * 3.5 
zs0 = np.random.random((1000)) 

N = 30j 
extent = (-np.pi/2,np.pi/2,0,3.5) 

xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N] 

resampled = griddata(xs0, ys0, zs0, xs, ys) 

plt.imshow(resampled.T, extent=extent) 
plt.plot(xs0, ys0, "r.") 
plt.plot(xs, ys, "b.") 
plt.title("imshow for irregularly spaced data using griddata") 
plt.show() 

Ich denke, Übergang von Ihrem 3 * X-Array zu drei X-Arrays ist offensichtlich.

Das Ergebnis ist:

Sample

Rote Punkte, die „original“ Positionen der Daten zeigen, blaue Punkte für die nun regelmäßig im Abstand Daten.

Griddata ein maskiertes Array zurückgibt. Alle Punkte, für die die Interpolation nicht ausgewertet werden kann, werden maskiert und dann als weiße Flächen dargestellt.

HTH, Thorsten

+0

ich war nur über diesen Link zu schreiben, wie es mir geholfen, aber sie waren schneller :) http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data – user1805743