Python: Построение графиков по данным из файла

от автора

Когда я был ВУЗ(овцом) нам на первом курсе на лабораторных работах по Физике часто приходилось строить графики. Причем рисовать их приходилось от руки на миллиметровой бумаге. Тогда просто не хватало навыков программирования чтобы отрисовать эти графики на PC. Сейчас же это можно с легкостью делать на LapTop(е). Причем существует целая куча способов построить график на PC. Это можно делать в Google Spreadsheets, MatLab, MathCAD, GNUOctave, MS Excel. Попробуем сделать это на Python.

Постановка задачи:

Есть файл LiLog.csv. Вот несколько его строчек:

  14,   0.833,  22.25, 22:43:09, 9/7/2023, 1517544445   15,   0.833,  22.25, 22:43:29, 9/7/2023, 1517544465   16,   0.000,  22.25, 22:43:49, 9/7/2023, 1517544485   17,   0.833,  22.25, 22:44:09, 9/7/2023, 1517544505

Надо построить 2D график, где по оси Х n-ный столбец, а по оси Y — k-тый столбец из текстового файла.

Что надо из софтвера?

Программа

Назначение

1

Python.exe

интерпретатор язык программирования Python

2

matplotlib

Модуль для визуализации

3

csv

модуль синтаксического разбора *.CSV файлов

4

NotePad++.exe

Текстовый редактор для написания Python скрипта и редактирования файла с исходными данными для графика

Решение

Вот этот скрипт берет *.csv файл и строит график по 4му и 2му столбцу.

import matplotlib.pyplot as plt import csv  X = [] Y = []  with open('LiLog.csv', 'r') as datafile:     plotting = csv.reader(datafile, delimiter=';')          for ROWS in plotting:         X.append(float(ROWS[5]))         Y.append(float(ROWS[1]))  plt.plot(X, Y) plt.title('Line Graph using CSV') plt.xlabel('X') plt.ylabel('Y') plt.show()

Что происходит в этом скрипте. Программа создает 2 списка: X Y. В список X помещает числа из 4го столбца в список Y помещает данные из второго столбца. Затем программа отрисовывает график по этим значениям на канве в отдельном окне.

Получился вот такой график

График естественного освещения от времени

График естественного освещения от времени

Также в график можно добавить еще один график, пояснения (легенду).

import matplotlib.pyplot as plt import csv  X = [] Y = []  with open('LiLog.csv', 'r') as datafile:     plotting = csv.reader(datafile, delimiter=';')          for ROWS in plotting:         X.append(float(ROWS[5]))         #X.append('{} {}'.format(ROWS[3], ROWS[4]))         Y.append(float(ROWS[1]))  print ('X {} Nums'.format(len(X))) print ('Y {} Nums'.format(len(Y)))  threshold=63.0 T=[threshold]*len(Y)  print ('Type X {} '.format(type(X))) print ('Type Y {} '.format(type(Y))) print ('Type T {} '.format(type(T)))  plt.plot(X, Y) plt.plot(X, T) plt.title('Illumination change') plt.xlabel('Time,[s]') plt.ylabel('Light level, [Lx]') plt.grid() plt.xticks(rotation=-90) plt.legend(['illumination', 'threshold {} Lx'.format(threshold)]) plt.show()

Вот, например, для наглядности добавлена прямая порогового значения для данного измерения на уровне 63 Люкс.

График естественного освещения от времени

График естественного освещения от времени

График в matplotlib не просто статический. Его можно увеличивать в интересующем месте и подставить поля графика в меню, которое расположено в нижнем левом углу окна.

время рассвета 1:24:41

время рассвета 1:24:41

Достоинства построения графиков на Python

1—Это бесплатно. В отличие от MatLab, MathCAD в Python вы можете строить графики абсолютно бесплатно.

2—Есть аналитика. Можно увеличивать график, сохранять график в формате *.png файла, задавать масштаб, подстраивать ширину полей, разворачивать шкалу, накладывать сетку.

3—По Python скрипту можно сгенерировать *.exe файл на случай, если захочется скрыть алгоритм построения графика.

4—Нет артефактов и временных файлов. Никаких *.o *.ld не нужно, как если бы вы решили писать графопостроитель на С++. Есть только *.py файл с исходником и больше ничего не нужно.

5—Всё делается чисто кодом. Вам даже мышка не нужна будет чтобы построить график.

6—Благодаря Python можно исполнять скрипты в любой операционной системе: Windows, Linux и проч.

Недостатки построения графиков в Python

1—Не совсем ясно как отображать отсчеты графика в реальном времени. Например когда числа поступают с улицы из последовательного COM пота или TCP сокета.

Вывод

Интерпретатор Python в связке с Matplotlib это отличный вариант для визуализации экспериментальных данных из текстового *.csv файла.

Акроним

Расшифровка

CSV

Comma-Separated Values

PC

personal computer

Links

https://translated.turbopages.org/proxy_u/en-ru.ru.769a89e5-64b314a2-b8a40da2-74722d776562/https/www.geeksforgeeks.org/how-to-plot-data-from-a-text-file-using-matplotlib/

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы строили графики на Python?
25% да 1
75% нет 3
Проголосовали 4 пользователя. Воздержавшихся нет.

ссылка на оригинал статьи https://habr.com/ru/articles/748282/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *