мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Это старая версия документа!


Внешний вид графиков

В matplotlib можно изменять не только тип самого графика (линия или столбцы), но и регулировать внешний вид выбранного типа:

x_axis = range(1, 20)
y_axis = [i * i for i in range(1, 20)]
 
lines = plt.plot(x_axis, y_axis) # здесь начинается отличие от примера из предыдущей недели. Мы сохраняем результат выполнения метода plot в отдельную переменную
 
plt.setp(lines, color='red', linewidth=2.0) # теперь, с помощью метода setp мы можем изменять форму линии. 
                                            # В данном случае, цвет устанавливаем в красный, а ширину линии делаем равной 2-м
 
plt.show()

Возможные параметры

Параметр Значения Смысл
alpha 0.0 ⇐ x ⇐1.0 прозрачность
antialiased True, False сглаживать или нет
color red, blue, black и т.д. цвет
linestyle '-', '–', '-.', ':', 'steps', … вид линии
linewidth вещественное число ширина линии
marker '+', ',', '.', '1', '2', '3', '4' вид меток
markeredgecolor red, blue, black и т.д. цвет границы меток
markeredgewidth вещественное число ширина границы меток
markerfacecolor red, blue, black и т.д. цвет внутренней части меток
markersize вещественное число размер меток

Размещение нескольких графиков

В одном окне можно разместить несколько графиков. Делается это с помощью метода subplot(r, c, num). Что означают аргументы: subplot делит область рисования на прямоугольную сетку размером $r\times c$, где $r$ это количество рядов, а $c$ - количество столбцов. $num$ это номер графика в сетке, нумерация идет с левого верхнего угла, слева направо и начинается с единицы.

Посмотрим на пример:

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)
 
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
 
plt.figure(1) # создаем область рисования, это действие обычно выполняется по-умолчанию.
plt.subplot(2,1,1) # в сетке размером 2 ряда на 1 столбец в первую ячейку разместим один график
plt.plot(t2, f(t2)) # нарисуем гладкую линию
plt.subplot(2, 1, 1) # добавим еще один график
marker_line = plt.plot(t1, f(t1)) # и нарисуем линию меток
plt.setp(marker_line, marker='o', color='blue') # вот такого вида
 
plt.subplot(2,1,2) # в сетке размером 2 ряда на 1 столбец во вторую ячейку разместим другой график
line2 = plt.plot(t2, np.cos(2*np.pi*t2))
plt.setp(line2, color='green', linestyle='--') # а этот график нарисуем прерывистой линией зеленого цвета
plt.show()

Подписи к графикам

Чтобы разобраться с подписями к данным и получить некоторые математические знания, нарисуем диаграмму распределения случайных чисел

mu, sigma = 100, 15 # зададим значения среднего и разброса
x = mu + sigma * np.random.randn(10000) # новая функция для генерации случайных чисел: в качестве аргумента принимает требуемое количество случайных чисел, 
# а возвращает список из вещесвенных значений случайных чисел. Обратите внимание, что x в результате тоже будет списком из 10 тыс элементов, каждый из которых
# представляет собой случайное число, умноженное на sigma и сдвинутое на mu 
 
# the histogram of the data
plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75) # новая форма гистограммы, в виде равномерного массива значений
 
 
plt.xlabel('Значения') # подпись для оси Х
plt.ylabel('Вероятность') # подпись для оси Y
plt.title('Гистограмма распределения') # заголовок диаграммы
plt.text(60, .025, r'$\mu=100,\ \sigma=15$') # текст, добавленный в окрестности точки (60; 0,025). Значения задаются в координатах графика, а не пикселей на экране
plt.axis([40, 160, 0, 0.03]) # метод axis позволяет описать диапазоны значений для осей. В данном случае, на оси Х будут отображены значения от 40 до 160, 
# а на оси Y от 0 до 0,03
plt.grid(True) # показывать ли координатную сетку
plt.show()

Задание 15

Нарисовать в окне на двух разных графиках 10 стран с наибольшим количеством регионов и наибольшим количеством городов. Оси графиков по