Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Визуализация научных данных с помощью пакета matplotlib в Linux

Оригинал: How to use matplotlib for scientific plotting on Linux
Автор: Joshua Reed
Дата публикации: 2 декабря 2014 года
Перевод: А. Кривошей
Дата перевода: апрель 2015 г.

Если вы ищете эффективное, автоматизированное решение для создания высококачественных научных графиков в Linux, обратите внимание на matplotlib - графический научный пакет на базе Python с открытым исходным кодом и лицензией на базе Python Software Foundation license. К его достоинствам можно отнести подробную документацию с примерами, интеграцию с Python и вычислительным научным пакетом NumPy, а также возможность автоматизации операций. В этом руководстве мы рассмотрим несколько примеров создания графиков с помощью matplotlib.

Возможности

- различные типы графиков (диаграммы, точечные, линейные, контурные...);
- синтаксис на базе Python;
- интеграция с научным вычислительным пакетом NumPy;
- исходные данные могут быть списками и кортежами Python, либо массивами NumPy;
- настраиваемый формат графика (масштабы осей, подписи, сетка и т.д.);
- настраиваемый текст (тип шрифта, размер, начертание и т.д.);
- форматирование TeX (уравнения, греческие символы и т.д.);
- совместим с IPython (позволяет строить графики интерактивно из командной оболочки Python);
- автоматизация - использует циклы Python для итеративного построения графиков;
- сохранение графиков в виде изображений (в форматах png, pdf, ps, eps и svg).

Основой эффективной работы matplotlib и многих его особенностей служит синтаксис на базе Python. Есть много научных пакетов, которые позволяют строить качественные графики, но многие из них позволяют делать это непосредственно в вашем коде на Python? Кроме того, могут ли они создавать автоматизированные процедуры для итеративного построения графиков и сохранения их в графических файлах? Matplotlib позволяет выполнять все эти задачи. С его помощью вы можете сэкономить время, тратящееся на создание графиков вручную.

Установка

В первую очередь для работы matplotlib установите Python и NumPy. Инструкции по установке NumPy можно найти здесь.
Для установки matplotlib в Debian или Ubuntu введите следующую команду:

$ sudo apt-get install python-matplotlib

Для установки matplotlib в Fedora или CentOS/RHEL:

$ sudo yum install python-matplotlib

Примеры использования Matplotlib

В этом руководстве мы рассмотрим следующие примеры использования matplotlib:

- точечный и линейный графики;
- гистограммы;
- круговые диаграммы.

В этих примерах для выполнения команд matplotlib мы будем использовать скрипты на Python . Обратите внимание, что в скрипте должны быть импортированы модули numpy и matplotlib с помощью команды import. np определяется как ссылка на модуль numpy, а plt - как ссылка на пространство имен matplotlib.pyplot:

import numpy as np
import matplotlib.pyplot as plt

Пример 1: точечные и линейные графики

Первый скрипт, script1.py, выполняет следующие задачи:

- Создает три набора данных (xData, yData1 и yData2);
- создает новый рисунок (под номером 1) шириной 8 дюймов и высотой 6 дюймов;
- задает название графика и подписи для осей x и y (все с размером шрифта 14);
- строит график первого набора данных, yData1, как функции набора данных xData в виде точечного графика с круглыми маркерами и подписью "y1 data";
- строит график второго набора данных, yData2, как функции набора данных xData в виде непрерывной линии красного цвета без маркеров и с подписью "y2 data";
- размещает легенду в верхнем левом углу графика;
- сохраняет рисунок в формате PNG.

Содержимое script1.py:

import numpy as np
import matplotlib.pyplot as plt
 
xData = np.arange(0, 10, 1)
yData1 = xData.__pow__(2.0)
yData2 = np.arange(15, 61, 5)
plt.figure(num=1, figsize=(8, 6))
plt.title('Plot 1', size=14)
plt.xlabel('x-axis', size=14)
plt.ylabel('y-axis', size=14)
plt.plot(xData, yData1, color='b', linestyle='--', marker='o', label='y1 data')
plt.plot(xData, yData2, color='r', linestyle='-', label='y2 data')
plt.legend(loc='upper left')
plt.savefig('images/plot1.png', format='png')

Построенный график:

Точечный и линейный графики

Пример 2: Гистограммы

Второй скрипт, script2.py, выполняет следующие задачи:

- создает набор данных из 1000 нормально распределенных случайных чисел;
- создает новый рисунок (под номером 1) шириной 8 дюймов и высотой 6 дюймов;
- задает название графика и подписи для осей x и y (все с размером шрифта 14);
- строит гистограмму из 40 столбцов с нижней и верхней границами -10 и 10 соответственно;
- добавляет на график текст, используя форматирование TeX для вывода греческих символов (размер шрифта 16);
- сохраняет рисунок в формате PNG.

Содержимое script2.py:

import numpy as np
import matplotlib.pyplot as plt
 
mu = 0.0
sigma = 2.0
samples = np.random.normal(loc=mu, scale=sigma, size=1000)
plt.figure(num=1, figsize=(8, 6))
plt.title('Plot 2', size=14)
plt.xlabel('value', size=14)
plt.ylabel('counts', size=14)
plt.hist(samples, bins=40, range=(-10, 10))
plt.text(-9, 100, r'$\mu$ = 0.0, $\sigma$ = 2.0', size=16)
plt.savefig('images/plot2.png', format='png')

Построенный график:

гистограмма

Заголовки разделов

Пример 3: круговые диаграммы

Третий скрипт, script3.py решает следующие задачи:

- создает набор данных, состоящий из пяти чисел;
- создает новый рисунок (под номером 1) шириной 8 дюймов и высотой 6 дюймов;
- добавляет на рисунок оси с соотношением сторон 1:1;
- задает название графика (размер шрифта 14);
- строит график в виде круговой диаграммы;
- сохраняет рисунок в формате PNG.

Содержимое script3.py:

import numpy as np
import matplotlib.pyplot as plt
 
data = [33, 25, 20, 12, 10]
plt.figure(num=1, figsize=(6, 6))
plt.axes(aspect=1)
plt.title('Plot 3', size=14)
plt.pie(data, labels=('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'))
plt.savefig('images/plot3.png', format='png')

Построенная диаграмма:

круговая диаграмма

Заключение

В этом руководстве показано несколько примеров построения графиков с помощью пакета matplotlib, который является отличным решением для визуализации научных данных в окружении Linux, так как обеспечивает естественную интеграцию с Python и NumPy, возможность автоматизации, и способен создавать разнообразные высококачественные графики. Документацию и дополнительные примеры использования matplotlib можно найти здесь.