Как правильно отобразить данные в Python - PullRequest
0 голосов
/ 14 мая 2019

Я пытался создать скрипт на python, который может читать преобразованные файлы csv и строить график столбца плотности. Проблема в том, что график выводит: MatPlotLib Graph

Вместо:

Excel Graph

, получаемый через Excel.

Фрагмент данных, которые я использовал, здесь:

time,sza,alt,lat,lon,x,rho,hperiod,hperiodquality,vperiod,vperiod delaytime,vperiodquality,cutoff,ionospheretrace delaytime,maxfreqquality,groundtrace delatytime,density
2015-08-20 11:24:12.292,111.07 deg,1208 km,-73.42 deg,234.34 deg,-0.49 Rm,1.26 Rm,0,0,1.588E00,167.443 μs,1,0,167.443 μs,0,167.443 μs,0.0
2015-08-20 11:24:19.836,110.86 deg,1198 km,-73.74 deg,234.15 deg,-0.48 Rm,1.26 Rm,0,0,0,167.443 μs,0,0,167.443 μs,0,167.443 μs,0.0
2015-08-20 11:24:27.379,110.64 deg,1188 km,-74.06 deg,233.96 deg,-0.48 Rm,1.26 Rm,0,0,1.621E00,167.443 μs,2,0,167.443 μs,0,167.443 μs,0.0
2015-08-20 11:24:34.922,110.43 deg,1177 km,-74.38 deg,233.75 deg,-0.47 Rm,1.26 Rm,4.131E-02,1,1.654E00,167.443 μs,1,0,167.443 μs,0,167.443 μs,21.162049047375756
2015-08-20 11:24:42.465,110.22 deg,1167 km,-74.70 deg,233.53 deg,-0.46 Rm,1.26 Rm,4.205E-02,2,1.641E00,167.443 μs,1,0,167.443 μs,0,167.443 μs,21.927005570408877
2015-08-20 11:24:50.008,110.00 deg,1157 km,-75.02 deg,233.30 deg,-0.46 Rm,1.25 Rm,4.285E-02,2,1.654E00,167.443 μs,1,0,167.443 μs,0,167.443 μs,22.769263297305073
2015-08-20 11:24:57.552,109.78 deg,1147 km,-75.34 deg,233.06 deg,-0.45 Rm,1.25 Rm,4.223E-02,2,1.579E00,167.443 μs,2,0,167.443 μs,0,167.443 μs,22.115129637253784
2015-08-20 11:25:05.095,109.57 deg,1137 km,-75.67 deg,232.80 deg,-0.45 Rm,1.25 Rm,4.434E-02,2,1.579E00,167.443 μs,2,0,167.443 μs,0,167.443 μs,24.38028085178149

Хотя я знаю, что график из Python не будет идентичен, форма, которую мне дает MatplotLab, даже не близка.

Это код, который я использовал:

import os
import csv
import glob
from csv import reader
from matplotlib import pyplot
import numpy as np


for file in glob.glob("*.csv"):
    f = open(file, 'r')
    print(file)
    data = list(reader(f))
    density  = [i[16] for i in data[1::]]

    pyplot.plot(range(len(density)),density)
    pyplot.yscale('log')
    axes = pyplot.gca()
    axes.set_ylim([0,10**4])
    pyplot.locator_params(axis='x', nbins=10)
    pyplot.title('Density change over time')
    pyplot.xlabel('Number')
    pyplot.ylabel('Density')
    pyplot.savefig('Graphs/' + os.path.splitext(file)[0] + '.png')
    pyplot.cla()

, в котором мой CSV имеет плотность в 17-м столбце. При распечатке списка плотности он даже дает мне правильные значения в правильном порядке.

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

Спасибо всем!

1 Ответ

0 голосов
/ 14 мая 2019

Проблема была исправлена, вместо того, чтобы просто регистрировать данные перед построением графика, вместо использования графика журнала. Я также сделал плотность в массиве NumPy:

    data = np.genfromtxt(file, delimiter=',')
    density  = data[:,16].flatten()
    density = np.log(density)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...