Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров36K

Когда я был ВУЗ(овцем) нам на первом курсе на лабораторных работах по Физике часто приходилось строить графики. Причем рисовать их приходилось от руки на миллиметровой бумаге. Выглядело это кустарно. С первого раза начертить график не получалось. Приходилось стирать ластиком. Миллиметровая шкала стиралась. На графике появлялись белые облака.

Тогда в 200x просто не хватало навыков программирования чтобы отрисовать эти графики на PC. Сейчас же построить график можно с легкостью на LapTop(е). Причем существует целая куча разных способов построить график на PC. Это можно делать в Google Spreadsheets, MatLab, MathCAD, GNU Octave, GNU Plot, MS Excel, GraphViz, Asymptote.

Попробуем еще построить график на Python при помощи программного компонента matplotlib.

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

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

  14,   1.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()

Чтобы это код исполнился надо предварительно в консоли прописать

pip install matplotlib

Вот, например, для наглядности добавлена прямая порогового значения для данного измерения на уровне 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 и графическая оболочка.

Недостатки построения графиков в 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?
64.2% да52
35.8% нет29
Проголосовал 81 пользователь. Воздержались 7 пользователей.
Теги:
Хабы:
Всего голосов 14: ↑6 и ↓8+2
Комментарии10

Публикации

Истории

Работа

Data Scientist
84 вакансии
Python разработчик
139 вакансий

Ближайшие события