Библиотека сайта 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 можно найти здесь.