Ich zeichne mehrere Geigendiagramme für einen großen Datensatz auf und es dauert so lange, bis eine Figur generiert wird. Ich möchte die Geigenplotting -Objekte als NPY oder NPZ retten und sie separat darstellen. Ist das möglich? Wenn ja, wie gehe ich vor?
import sys
import numpy as np
import matplotlib.pyplot as plt
from netCDF4 import Dataset as ds
from freq_funcs import tparse
from datetime import datetime,timedelta
# specify variable names in line with the command line
vnm = sys.argv[1]
# input/output directories
idir = "../input/10sn"
odir = "../figs"
osres = "qd"
# for saving the figure, set this value to True
dosavefig = 1
# models and resolutions
models = ["obs","e5","arpege","gem","geos","grist","gsam","icon","icon","ifs","mpas","nicam","scream","shield","um" ]
isress = ["qd" ,"qd","2km" ,"5km","3km" ,"5km" ,"4km" ,"2km" ,"5km" ,"4km","3km" ,"3km" ,"3km" ,"3km" ,"5km"]
osress = ["qd" ,"qd","qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ,"qd" ]
modfnm = ["Observation","ERA5 0.25\u00b0","ARPEGE 2km","GEM 5km","GEOS 3km","GRIST 5km","GSAM 4km","ICON 2km","ICON 5km","IFS 4km","MPAS 3km","NICAM 3km","SCREAM 3km","SHIELD 3km","UM 5km"]
#clist = ["C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","lightsteelblue","olive","teal","black"]
clist = ["black","black","C0","C1","C2","C3","C4","C5","C6","C7","C8","teal","C9","lightsteelblue","olive"]
lslist = ["-","--","-","-","-","-","-","-","-","-","-","-","-","-","-"]
# line widths and row/columns specifier
lwlist = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]
rclist = [(0,0),(0,1),(1,0),(1,1),(2,0),(2,1)]
# list of regions
reglist = ["amz","afr","pco","ino","lnd","ocn"]
regs = len(reglist)
tres = "havg"
# output file extension
fext = "svg"
# position settings
if (vnm == "pw"):
pos = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
entries = len(models) - 1
zolist = np.arange(0,entries,1)
print(entries,len(zolist),zolist)
else:
pos = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
entries = len(models)
zolist = np.arange(0,entries,1)
print(entries,len(zolist),zolist)
nums = np.arange(0,entries,1)
fig,axs = plt.subplots(3,2,figsize=(12,10))
if (vnm == "pr"):
fvnm = "Precipitation rate"
uts = "mm day\u207b\u00b9"
vmax = 36
vmin = -1
elif (vnm == "swnt"):
fvnm = "SWNT"
uts = "W m\u207b\u00b2"
vmax = 400
vmin = 50
elif (vnm == "lwnt"):
fvnm = "Outgoing longwave radiation"
uts = "W m\u207b\u00b2"
vmax = 400
vmin = 50
elif (vnm == "pw"):
fvnm = "Precipitable water"
uts = "mm"
vmax = 90
vmin = 0
print(" {0:s}".format(fvnm))
ofn = "reg.avg.{0:s}.{1:s}".format(vnm,fext)
ofp = "{0:s}/{1:s}".format(odir,ofn)
# container for stats
# min, max, mean, std, median
var_stats = np.empty((regs,entries,5))
for r in range(regs):
reg = reglist[r]
col = rclist [r][0]
row = rclist [r][1]
mt_arr = []
for m in range(entries):
model = models[m]
isres = isress[m]
osres = osress[m]
color = clist [m]
zodr = zolist[m]
lw = lwlist[m]
mfnm = modfnm[m]
if (model == "obs" and vnm == "pr"):
mfnm = "IMERG 0.1\u00b0"
elif (model == "obs" and vnm == "pw"):
mfnm = "MIMIC TPW2"
elif (model == "obs" and vnm in ["lwnt","swnt"]):
mfnm = "CERES 1.0\u00b0"
isres = "od"
osres = "od"
if (reg == "amz"):
lsm_ifn = "lsm.amz.{0:s}.nc".format(osres)
tlbl = "Amazon biome"
mskv = 1
elif (reg == "pco"):
lsm_ifn = "lsm.pco.{0:s}.nc".format(osres)
tlbl = "Pacific ocean"
mskv = 1
elif (reg == "afr"):
lsm_ifn = "lsm.afr.{0:s}.nc".format(osres)
tlbl = "African continent"
mskv = 1
elif (reg == "ino"):
lsm_ifn = "lsm.ino.{0:s}.nc".format(osres)
tlbl = "Indian ocean"
mskv = 1
elif (reg == "lnd"):
lsm_ifn = "lsm.ocn1.lnd0.10sn.{0:s}.nc".format(osres)
tlbl = "Land only (global)"
mskv = 0
elif (reg == "ocn"):
lsm_ifn = "lsm.ocn1.lnd0.10sn.{0:s}.nc".format(osres)
tlbl = "Ocean only (global)"
mskv = 1
lsm_ifp = "{0:s}/{1:s}".format(idir,lsm_ifn)
lsm_id = ds("{0:s}".format(lsm_ifp))
lsm_id.set_auto_mask(False)
ilsm = lsm_id["lsm"][:]
print(" region : {0:20s} | model : {1:12s}".format(tlbl,mfnm))
ifn = "{0:s}.{1:s}.{2:s}.10sn.{3:s}.{4:s}.nc".format(model,isres,"all",osres,tres)
ifp = "{0:s}/{1:s}".format(idir,ifn)
fld_id = ds("{0:s}".format(ifp))
ilat = fld_id["lat"][:]
ilon = fld_id["lon"][:]
if (model == "grist"):
ivar = fld_id[vnm] [24:]
idx = np.where((ilsm[24:] == mskv) & (ivar >= 0))
#idx = np.where(ilsm[24:] == mskv)
else:
ivar = fld_id[vnm] [:]
idx = np.where((ilsm == mskv) & (ivar >= 0))
#idx = np.where(ilsm == mskv)
sel_dat = ivar[idx].compressed()
mt_arr.append(sel_dat)
var_stats[r,m,0] = np.min (sel_dat)
var_stats[r,m,1] = np.max (sel_dat)
var_stats[r,m,2] = np.std (sel_dat)
var_stats[r,m,3] = np.mean (sel_dat)
var_stats[r,m,4] = np.median(sel_dat)
vio_parts = axs[col,row].violinplot(mt_arr,positions=pos,showmeans=True,showmedians=True,widths=0.8)
np.save(ofp,vio_parts)
for comp, coll in vio_parts.items():
if (comp == "bodies"):
for pc, co in zip(coll, nums):
pc.set_linestyle(lslist[co])
pc.set_facecolor(clist[co])
pc.set_edgecolor(clist[co])
elif (comp == "cmedians"):
coll.set_color(clist)
coll.set_linestyle(":")
else:
coll.set_color(clist)
axs[col,row].set_xticks([],[])
axs[col,row].grid()
axs[col,row].set_title("{0:s}".format(tlbl))
#axs[col,row].set_ylabel("{0:s} ({1:s})".format(fvnm,uts))
#axs[col,row].set_yscale("log")
axs[col,row].set_ylim(vmin,vmax)
lsm_id.close()
fld_id.close()
axs[0,0].set_ylabel("{0:s} ({1:s})".format(fvnm,uts))
axs[1,0].set_ylabel("{0:s} ({1:s})".format(fvnm,uts))
axs[2,0].set_ylabel("{0:s} ({1:s})".format(fvnm,uts))
# displaying statistics on screen
for r in range(regs):
#for r in range(0,1):
model_var = var_stats[r]
reg = reglist[r]
for m in range(entries):
mfnm = modfnm [m]
min_val = model_var[m,0]
max_val = model_var[m,1]
std_val = model_var[m,2]
avg_val = model_var[m,3]
med_val = model_var[m,4]
print(
"{0:s} | {1:20s} | {2:15s} | ".format(reg,fvnm,mfnm),
"max = {0:7.2f} {1:s} | ".format(max_val,uts),
"min = {0:7.2f} {1:s} | ".format(min_val,uts),
"std = {0:7.2f} {1:s} | ".format(std_val,uts),
"avg = {0:7.2f} {1:s} | ".format(avg_val,uts),
"med = {0:7.2f} {1:s} | ".format(med_val,uts),
)
print("")
# labeling parts
for m in range(entries):
mfnm = modfnm[m]
co = clist [m]
if (mfnm == "Observation" and vnm == "pw"):
mfnm = "MIMIC-TPW2"
elif (mfnm == "Observation" and vnm == "pr"):
mfnm = "IMERG V06"
elif (mfnm == "Observation" and vnm == "lwnt"):
mfnm = "CERES 1.0\u00b0"
#axs[2,1].scatter(zolist,np.ones(entries) * -100,label=mfnm,alpha=0.8,c=co)
axs[2,1].plot(zolist,np.ones(entries) * -100,label=mfnm,alpha=0.8,c=co)
axs[2,1].legend(fontsize=10,bbox_to_anchor=(0.9, -0.10),ncol=7)
plt.subplots_adjust(left=0.067,right=0.99,bottom=0.09,top=0.97,hspace=0.15,wspace=0.15)
if (dosavefig):
plt.savefig("{0:s}".format(ofp))
else:
plt.show()
Short description of the input files
The input files are netCDF4 files that are about 1GB each, model datasets showing different atmospheric fields such as longwave radiation, precipitation rates, etc. The each field's data dimension is (time, latitude, longitude) and their size is (960,81.1440). Jeder Datenpunkt ist daraus, wie sich die Modelldatensätze voneinander unterscheiden. Nein, nein, ich kann Datenpunkte nicht abschneiden. Das ist in Ordnung, aber ich möchte es, damit ich die Diagramme (Grenzweißräume, Schriftarten usw.) optimieren kann, ohne den 2 -Stunden -Code jedes Mal mit geringfügigen Figurenanpassungen ausführen zu müssen. Ich denke, es wäre ideal für mich, die Geigenplotobjekte irgendwie zu speichern, die dann ein separates Skript schreiben kann, um sie zu planen. Objekte. < /p>
Was ich mit < /li>
< />
mit den gespeicherten Geigenplotobjekten aus irgendeinem Grund nicht zu tun habe, kann ich den Rest der 'Tweaking' (von Zeile 201 bis Ende des Drehbuchs) nicht verwenden. Wenn ich die Datei .npy lade, erhalte ich die folgende Ausgabe aus der print ()
{'bodies': [, , , , , , , , , , , , , , ], 'cmeans': , 'cmaxes': , 'cmins': , 'cbars': , 'cmedians': }
< /code>
Ich denke, dieses Objekt ist in Form von Python -Wörterbuch, aber ich kann nicht auf die Elemente des obigen Objekts zugreifen. />
Thanks.
Ich zeichne mehrere Geigendiagramme für einen großen Datensatz auf und es dauert so lange, bis eine Figur generiert wird. [url=viewtopic.php?t=30561]Ich möchte[/url] die Geigenplotting -Objekte als NPY oder NPZ retten und sie separat darstellen. Ist das möglich? Wenn ja, wie gehe ich vor?[code]import sys import numpy as np import matplotlib.pyplot as plt from netCDF4 import Dataset as ds from freq_funcs import tparse from datetime import datetime,timedelta
# specify variable names in line with the command line vnm = sys.argv[1]
# input/output directories idir = "../input/10sn" odir = "../figs"
osres = "qd"
# for saving the figure, set this value to True dosavefig = 1
for comp, coll in vio_parts.items(): if (comp == "bodies"): for pc, co in zip(coll, nums): pc.set_linestyle(lslist[co]) pc.set_facecolor(clist[co]) pc.set_edgecolor(clist[co])
if (dosavefig): plt.savefig("{0:s}".format(ofp)) else: plt.show() [/code] [list] [*]Short description of the input files [/list] The input files are netCDF4 files that are about 1GB each, model datasets showing different atmospheric fields such as longwave radiation, precipitation rates, etc. The each field's data dimension is (time, latitude, longitude) and their size is (960,81.1440). Jeder Datenpunkt ist daraus, wie sich die Modelldatensätze voneinander unterscheiden. Nein, nein, ich kann Datenpunkte nicht abschneiden. Das ist in Ordnung, aber [url=viewtopic.php?t=30561]ich möchte[/url] es, damit ich die Diagramme (Grenzweißräume, Schriftarten usw.) optimieren kann, ohne den 2 -Stunden -Code jedes Mal mit geringfügigen Figurenanpassungen ausführen zu müssen. Ich denke, es wäre ideal für mich, die Geigenplotobjekte irgendwie zu speichern, die dann ein separates Skript schreiben kann, um sie zu planen. Objekte. < /p>
Was ich mit < /li> < /> mit den gespeicherten Geigenplotobjekten aus irgendeinem Grund nicht zu tun habe, kann ich den Rest der 'Tweaking' (von Zeile 201 bis Ende des Drehbuchs) nicht verwenden. Wenn ich die Datei .npy lade, erhalte ich die folgende Ausgabe aus der print () {'bodies': [, , , , , , , , , , , , , , ], 'cmeans': , 'cmaxes': , 'cmins': , 'cbars': , 'cmedians': } < /code> Ich denke, dieses Objekt ist in Form von Python -Wörterbuch, aber ich kann nicht auf die Elemente des obigen Objekts zugreifen. /> Thanks.
Ich bin gerade dabei, die Website meines Kunden von Zohos Lebensende V1 API auf die neue V2 -API zu verbessern. In der Lage, Anfragen zu haben, um ein neues 'Lead' im Zoho -System zu speichern. Gehen...
In einer Anwendung erstellen wir wie folgt eine eindeutige Benutzer-ID mit 10 Ziffern.
function random_number($length) { // Creates random number
$original_string = array_merge(range(0,11));...
Ich habe eine Konsolenanwendung in VB. Private Sub mergePdfFiles(pdfFiles As String(), output As String)
Dim out As PdfDocument = New PdfDocument
Try
For Each file As String In pdfFiles
Dim inputDoc...
Ich habe eine DownloadFiles-Funktion in meinem Code, die es Benutzern ermöglicht, entweder einzelne Dateien oder mehrere Dateien in einer ZIP-Datei herunterzuladen. Allerdings kommt jeder Download...
Ich habe Anforderung, wo ich Bilder aus der SharePoint Online -Bibliothek in einem meiner Remote -Server im Organisationsnetzwerk speichern wollte. Dieser Remote -Server ist kein SFTP -Server. Dieses...