2016-09-05 4 views
-1

Ich zeichne Graphen. Und ich hätte gerne den Wertebereich auf den Farbbalken für die Graphen "U_velocity" und "U_shear_velocity" von -0,3 bis 0,3. Außerdem versuche ich, den Bereich von x ax in Stunden von 0 bis 12,5 für U- und V-Schergeschwindigkeitsdiagramme zu machen, aber nichts funktioniert und stattdessen habe ich Bedeutungen der Geschwindigkeit. Wie kann ich das tun, bitte hilf mir. DieseOzeanographische Plotting in Python

from netCDF4 import * 
import matplotlib as mp 
import numpy as np 

#import matplotlib.pyplot as plt 
import pylab as plt 


#%% 

file = "/home/vlad/Desktop/task/Untitled Folder/result.nc" 


ncdata = Dataset(file, 'r') 

u = np.squeeze(ncdata.variables['u'][:]) 
v = np.squeeze(ncdata.variables['v'][:]) 
z = np.squeeze(ncdata.variables['z'][:]) 

time = ncdata.variables['time'][:]/3600 

ncdata.close() 

u_mean = np.mean(u[0:100,:],0) 
z_mean = np.mean(z[0:100,:],0) 
v_mean = np.mean(v[0:100,:],0) 

u_mean_10 = u[900:1000,:] 
v_mean_10 = v[900:1000,:] 
z_10 = np.mean(z[900:1000,:],0) 

time_10 = time[900:1000] - time[900] 


T = len(time_10) 
L = len(z_10) 

fig = plt.figure(6) 
plt.pcolormesh(time_10,z_10,u_mean_10.T) 
plt.xlim([0, time_10[-1]]) 
fig.suptitle('U_velocity', fontsize=25) 
plt.xlabel('time', fontsize=20) 
plt.ylabel('depth(m)', fontsize=20) 
plt.colorbar() 
plt.show() 

shear_u_mean_10 = np.zeros([T,L]) 

for t in range(T): 
    for i in range(L-1): 
     tmp=(u_mean_10[t, i+1]-u_mean_10[t, i])/(z_10[i+1]-z_10[i]) 
     tmp_depth = 0.5 * (z_10[i+1]+z_10[i]) 
     shear_u_mean_10[t,i] = tmp 

fig = plt.figure(10) 
plt.pcolormesh(time_10/3600,z_10, shear_u_mean_10.T) 
plt.xlim([0, time_10[-1]/3600]) 
plt.colorbar() 
#plt.ylim([-30, -25]) 
fig.suptitle('U_shear velocity', fontsize=25) 
plt.xlabel('time', fontsize=20) 
plt.ylabel('depth(m)', fontsize=20) 
plt.show() 


shear_v_mean_10 = np.zeros([T,L]) 

for t in range(T): 
    for i in range(L-1): 
     tmp=(v_mean_10[t, i+1]-v_mean_10[t, i])/(z_10[i+1]-z_10[i]) 
     tmp_depth = 0.5 * (z_10[i+1]+z_10[i]) 
     shear_v_mean_10[t,i] = tmp 

fig = plt.figure(11) 
plt.pcolormesh(time_10/3600,z_10, shear_v_mean_10.T) 
plt.xlim([0, time_10[-1]/3600]) 
plt.colorbar() 
#plt.ylim([-30, -25]) 
fig.suptitle('V_shear velocity', fontsize=25) 
plt.xlabel('time', fontsize=20) 
plt.ylabel('depth(m)', fontsize=20) 
plt.show() 



fig = plt.figure(7) 
plt.pcolormesh(time_10,z_10,v_mean_10.T) 
plt.xlim([0, time_10[-1]]) 
fig.suptitle('V_velocity', fontsize=25) 
plt.xlabel('time', fontsize=20) 
plt.ylabel('depth(m)', fontsize=20) 
plt.colorbar() 
plt.show() 
+1

Könnten Sie bitte versuchen, ein [mcve] zu machen? Etwas, was wir versuchen können zu laufen? Oder teilen Sie uns mit, welche Fehlermeldung Sie erhalten. Wir können Ihren Graphen nicht darstellen, da wir Ihre Datendatei nicht haben. Fügen Sie auch ein Bild Ihrer aktuellen Plotausgabe in Ihre Frage ein – Praveen

+0

@Praveen Ich habe versucht, diese Datendatei herunterzuladen, aber ich konnte nicht finden, wie man das direkt macht. Dann habe ich versucht, es über den Link herunterzuladen, aber die Website erlaubt mir nicht auf Links verweisen, weil es ein Spam sein kann. – Vlados9951

Antwort

0

ist keine einfache Frage mit einer Wand von Code zu beantworten, wobei Bezug auf unbekannte Datei result.nc und mehrere unabhängige und ziemlich spezifische Probleme. Folgendes kann helfen:

Der Farbbalkenbereich kann durch Übergeben von vmin=-0.3 und vmax=0.3 an pcolormesh festgelegt werden.

Um den Zeitbereich zu begrenzen, können Sie Array-Slicing (z. B. time[time<12.5], u[time<12.5]) verwenden.

Für Ihre Daten sicher ist die Geschwindigkeit nur speed = np.sqrt(np.power(u,2) + np.power(v,2)

Bitte geben Sie ein Minimal, Complete, und prüfbare Beispiel, wenn Sie weitere Hilfe benötigen.

+0

Vielen Dank für Ihre großartige Hilfe. Ich werde versuchen zu tun, was du geschrieben hast. Im anderen Fall habe ich versucht, diese Datendatei herunterzuladen, aber ich konnte nicht finden, wie man das direkt macht. Dann habe ich versucht, es über den Link herunterzuladen, aber die Website erlaubt mir nicht auf Links verweisen, weil es ein Spam sein kann. – Vlados9951

Verwandte Themen