2016-07-21 9 views
0

Lange Rede, kurzer Sinn, ich zeichne Klimadaten aus einer netCDF-Datei. Mein einziges Problem, ich muss Daten aus Dutzenden dieser Dateien plotten, die jeweils über einhundert Datenpunkte haben. Zum Glück sind sie alle identisch formatiert und ihre Namen sind in aufsteigender Reihenfolge (zum Beispiel: file1.nc, file2.nc ...). Dies ist mein Code (unfertig, da ich die Marker und Farben der Marker ändern muss):Python: Plotten von Daten aus mehreren netCDF-Dateien

Wie auch immer, ich möchte mehr als diese eine Datei plotten (etwa 20 zu beginnen). Gibt es eine Möglichkeit, das zu tun? Außerdem, wenn Sie eine Idee haben, wie Sie die Farbleiste basierend auf Variablen "Daten" einrichten, wäre das toll.

Vielen Dank!

+2

Wissen Sie über Schleifen? –

+0

Ich kann nicht sagen, dass ich ... Ein Anfänger Programmierer hier – xyzman

Antwort

0

ein leeres Array Fabrikat:

data =[] 

eine Liste von Dateinamen Hersteller:

flist=["001.dat","002.dat",...] 

dann durch diese Liste iterieren:

for fn in flist: 
     data.append(netcdf_file(fn,'r')) 

Jetzt können Sie auf Ihre Daten beziehen Sätze wie:

data[0] 
data[1] 

usw.

+1

Wenn die Dateien alle im selben Ordner sind, können Sie Glob verwenden, um sie alle zu finden: 'filelist = glob.glob ('/ Users/epsuser/Dropbox/Argo/Data/2/*. Nc ') ' – story645

+0

das war sehr hilfreich! vielen Dank! – xyzman

0

zumindest, plt.savefig("some unique name") bedeutet, dass Sie sie in einer Schleife erzeugen kann, ohne die Grundstücke zu speichern, die/schließen sie einzeln.

ich auch empfehlen, sich mit dem object oriented interface:

fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 
map = Basemap(projection='robin',lon_0=0,resolution='l',ax=ax) 
#keep all your code 
cs = map.scatter(x,y,data) 
fig.savefig("{}".format(some unique identifier)) 

Eta: Und Sie können alle Dateien mit glob zu finden, wenn sie im selben Ordner sind:

import glob 
filelist = glob.glob('/Users/epsuser/Dropbox/Argo/Data/*.nc') 
for fl in filelist: 
    ncfile = netcdf_file(fname,'r') 
    #the rest of your reading code 
    fig = plt.figure() 
    #etc... 
Verwandte Themen