Matplotlib (pylab) прості речі, записки океанолога - обробка та візуалізація даних

Завдання: отримати графіку високої якості не виходячи з пітона
.?нструмент: Matplotlib

Цим постом я починаю серію вільних перекладів вибраних уривків документації до Matplotlib.
Це пітоновская бібліотека для створення двомірних графіків високої якості (publication quality). Зроблена з таким розрахунком щоб перехід на неї доставив мінімальні труднощі досвідченим користувачам Матлаб. Як говориться на сайті бібліотеки, Matplotlib намагається зробити прості речі простими а складні речі можливими.

Як виглядає створювана графіка можна подивитися тут
Як встановлювати бібліотеку я вже писав в попередньому пості

Почнемо з простого графіка і контролю властивостей лінії.

Кожна функція робить різні зміни з зображенням, наприклад створює зображення, створює область побудови на зображенні, малює лінії в області побудови, додає підпису і так далі. При цьому matplotlib.pyplot відстежує стан поточного зображення, і області побудови, так що отрісовиваємих функції застосовуються до поточних осях.

import matplotlib. pyplot as plt
plt. plot # 40; # 91; 1. 2. 3 # 93; # 41;
plt. ylabel # 40; 'Some numbers' # 41;
plt. show # 40; # 41;

Matplotlib (pylab) прості речі, записки океанолога - обробка та візуалізація даних

Може виникнути питання чому по осі x у нас значення від 0 до 2, а по y від 1 до 3. Якщо ви передасте один список або масив команді plot (). то matplotlib сприймає його як послідовність y значень і автоматично генерує значення x. Оскільки пітон починає вважати з 0, за замовчуванням вектор x має таку ж довжину як y. але починається з нуля. Таким чином дані x будуть [0,1,2].

plot () універсальна команда і в неї можна передавати будь-яку кількість аргументів. Наприклад для того щоб відобразити y в залежності від x. можна виконати команду:

plt. plot # 40; # 91; 1. 2. 3. 4 # 93 ;. # 91; 1. 4. 9. 16 # 93; # 41;

Для кожної пари аргументів xy. існує необов'язковий третій аргумент, рядок форматування, яка визначає колір і тип лінії. Букви і символи рядка форматування такі ж як в Матлаб і також як там ви поєднуєте букви і символи визначають колір і тип лінії. За замовчуванням рядок форматування виглядає як.? B -.?. що означає безперервна синя лінія. Для того щоб відобразити дані з попереднього прикладу червоними кружками, потрібно ввести

import matplotlib. pyplot as plt
plt. plot # 40; # 91; 1. 2. 3. 4 # 93 ;. # 91; 1. 4. 9. 16 # 93 ;. 'Ro' # 41;
plt. axis # 40; # 91; 0. 6. 0. 20 # 93; # 41;

Matplotlib (pylab) прості речі, записки океанолога - обробка та візуалізація даних

Повний список стилів можна знайти на сторінці документації команди plot (). Команда axis () отримує в якості аргументів [xmin, xmax, ymin, ymax] які встановлюють мінімальні і максимальні межі осей.

Якби matplotlib міг працювати тільки зі списками, ти був би досить марний для обробки даних. Як правило ви будете використовувати матриці numpy. Фактично всередині matplotlib всі дані переводяться в матриці numpy. Приклад нижче будує кілька ліній з даних в матрицях, кожну зі своїм форматуванням використовуючи всього одну команду (звичайно у вас повинен бути вже встановлено numpy).

import numpy as np
import matplotlib. pyplot as plt

# Рівномірно розподілені значення від 0 до 5, з кроком 0.2
t = np. arange # 40; 0. 5. 0.2 # 41;

# Червоні рисочки, сині квадрати і зелені трикутники
plt. plot # 40; t. t. 'R--'. t. t ** 2. 'bs'. t. t ** 3. 'g ^' # 41;

Matplotlib (pylab) прості речі, записки океанолога - обробка та візуалізація даних

властивості лінії

У ліній є безліч атрибутів які ви можете встановити: товщина, стиль, антиалиасинг і так далі. Для подробиць дивіться документацію matplotlib.lines.Line2D. є кілька способів встановити властивості лінії

  1. .?Використовувати ключові слова, тобто ви пишете властивість і привласнюєте йому значення:

plt. plot # 40; x. y. linewidth = 2.0 # 41;

  • .?Використовувати команду setp (). Приклад нижче використовує синтаксис схожий на матлабовскій для того щоб встановити кілька властивостей для списку ліній. setp працює як зі списком об'єктів, так і з одиночним об'єктом. Ви можете використовувати або аргументи ключові слова або матлабовскій стиль рядок / значення.

    lines = plt. plot # 40; x1. y1. x2. y2 # 41;
    # Use keyword args
    plt. setp # 40; lines. color = 'r'. linewidth = 2.0 # 41;
    # Or matlab style string value pairs
    plt. setp # 40; lines. 'Color'. 'R'. 'Linewidth'. 2.0 # 41;

  • Є ще третій спосіб, але я його поки не розумію і відправляю цікавляться до першоджерела.
  • Наступного разу ми поговоримо про декілька графіках і осях на одному зображенні а також про роботу з текстом.

    1 Comment so far

    Третій спосіб заснований на тому, що plot () повертає кортеж об'єктів, тобто можна зробити так:

    line1, line2 = plot (x1, y1, x2, x2)

    а потім звертатися до властивостей об'єкта за допомогою виклику його методів.

    line, = plt.plot (x, y, '-')
    line.set_antialiased (False) # відключити сглажіваеніе

    кома після line, необхідна щоб привласнити змінної саме об'єкт а не кортеж з одного об'єкта.

    Posting your comment.