2013-01-02 25 views
7

Sto provando a inserire alcuni dati in una trama di imshow(). Il mio problema è che i dati non arrivano come un array MxN ma come un array 3xN (coordinata e valore xey). I punti NON sono disposti come una griglia regolare ma si trovano all'interno di [xmin, xmax, ymin e ymax] = [- pi/2, pi/2,0,3.5].matplotlib imshow() con punti di dati spaziati irregolari

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

Come posso ottenere una buona trama di immagine da quei dati? Grazie mille per qualsiasi aiuto.

btw i dati rappresentano i valori di temperatura sulla superficie di un'asta in funzione della posizione assiale e azimutale, si pensi a una maglia cfd.

+1

hm fine interp2d sta per fare il lavoro ... Consente di vedere – user1805743

+1

Se hai risolto il tuo problema, ti invitiamo a rispondere alla tua domanda e accettare la risposta? – tacaswell

risposta

12

Si consiglia di utilizzare il metodo griddata per l'interpolazione. Un campione sarebbe:

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() 

Credo che la transizione dal 3 * X-array a tre X-array è evidente.

Il risultato è:

Sample

punti rossi indicano le posizioni "originali" dei dati, i punti blu per i dati ora ad intervalli regolari.

griddata restituisce un array mascherato. Tutti i punti per i quali l'interpolazione non può essere valutata vengono mascherati e quindi tracciati come aree bianche.

HTH, Thorsten

+0

stavo proprio per postare questo link in quanto mi ha aiutato, ma eri più veloce :) http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data – user1805743