Как получить заполненный контур из моих данных? - PullRequest
0 голосов
/ 22 января 2020

Я хотел бы построить заполненную контурную диаграмму, которая показывает изменение потоков с вертикальными уровнями для разных волновых чисел. Ось X - это волновое число. Ось Y представляет вертикальные уровни.

У меня есть 70 различных файлов, каждый из которых представляет определенный уровень. В каждом файле у меня есть два столбца, которые являются волновым числом и потоком. Для соответствующего волнового числа и вертикального уровня необходимо построить график потока. Я приложил две фотографии того, как это должно выглядеть и что я получаю. Я не понимаю, что кажется неправильным при чтении файлов. Любая помощь будет оценена.

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

filelist=[]

for i in range(1,71):
    filelist.append("kespec_TL%s.asc" %i)

for i in filelist:
    data=np.loadtxt(i)
    x=data[:,0] # Wavenumber

z=np.empty((71,283))
for i in enumerate(filelist):
    z[i,:]=np.loadtxt(i)[:,1] # Flux array

f=np.loadtxt("atm_hyb_sz_70.txt")
y=f[:,1] #vertical levels
##
X,Y=np.meshgrid(x,y)
#
plt.contourf(X,Y,z,20,cmap='RdGy')
plt.show()

Желаемый результат:

Expected

Что я получаю:

result

Редактировать: Рабочий код

import matplotlib.colors
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
import sys

filelist=[]

for i in range(1,71):
    filelist.append("kespec_TL%s.asc" %i)



g=np.loadtxt("kespec_TL1.asc")
x=g[:,0]
f=np.loadtxt("atm_hyb_sz_70.txt")
y=f[:,1]

z=np.zeros((71,283))
for i,gname in enumerate(filelist):
    z[i,:]=np.loadtxt(gname)[:,1]

#sys.exit()
plt.semilogx(x)
X,Y=np.meshgrid(x,y)
levels=[0,0.5,2,7,10,20,70]
plt.contourf(X,Y,z,levels,cmap='jet')
plt.colorbar()
plt.savefig('Spectra.png')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...