Matplotlib

matplotlib - удобная библиотека для визуализации данных, в основном для двухмерной графики.

matplotlib на русском

```
import matplotlib.pyplot as plt           # Подключение модуля pyplot
                                          # библиотеки matplotlib под псевдонимом plt
%matplotlib inline

```

```
import numpy as np                        # Подключение библиотеки numpy
x = np.linspace(0, 15, 101)               # Генерация последовательности из 101 числа,
                                          # равномерно распределенных в интервале от 0 до 15
y = np.sin(x)                             # Данные для отображения на графике
print(x.shape)                            # Вывод формы сформированного массива
print(x)                                  # Вывод самого массива

(101,)
[ 0.    0.15  0.3   0.45  0.6   0.75  0.9   1.05  1.2   1.35  1.5   1.65
  1.8   1.95  2.1   2.25  2.4   2.55  2.7   2.85  3.    3.15  3.3   3.45
  3.6   3.75  3.9   4.05  4.2   4.35  4.5   4.65  4.8   4.95  5.1   5.25
  5.4   5.55  5.7   5.85  6.    6.15  6.3   6.45  6.6   6.75  6.9   7.05
  7.2   7.35  7.5   7.65  7.8   7.95  8.1   8.25  8.4   8.55  8.7   8.85
  9.    9.15  9.3   9.45  9.6   9.75  9.9  10.05 10.2  10.35 10.5  10.65
 10.8  10.95 11.1  11.25 11.4  11.55 11.7  11.85 12.   12.15 12.3  12.45
 12.6  12.75 12.9  13.05 13.2  13.35 13.5  13.65 13.8  13.95 14.1  14.25
 14.4  14.55 14.7  14.85 15.  ]

```
Объект класса **plt** - это ваше полотно.

Применяя к нему различные методы, вы наносите на полотно графики, надписи, текст, элементы стиля и т.п.

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

```
plt.plot(x, y)                            # Отрисовка графика зависимости y от x
plt.show()                                # Вывод на экран (фиксация графика)

```

Теперь сделаем надписи для каждой из осей и выведем название графика:

```
plt.plot(x, y, label = 'sin(x)')          # Параметр label задает описание графика
plt.title("y = sin(x)")                   # Надпись вверху графика
plt.xlabel('Переменная X')                # Надпись для оси x
plt.ylabel('Переменная Y')                # Надпись для оси y
plt.show()                                # Вывод графика

```

Мы можем изменить размер нашего графика следующим образом:

```
plt.figure(figsize=(10, 5))                   # Задание размера полотна в дюймах
                                              # по оси x и y соответственно
plt.plot(x, y, label = 'sin(x)')              # Параметр label задает описание графика
plt.plot(x, np.cos(x)/2, label = 'cos(x)/2')  # Отрисовка еще одного графика на полотне
plt.title("y = sin(x)")                       # Надпись вверху графика
plt.xlabel('Переменная X')                    # Надпись для оси x
plt.ylabel('Переменная Y')                    # Надпись для оси y
plt.legend()                                  # Отрисовка названий графиков ("легенды")
plt.show()                                    # Вывод графика

```
Также для удобства мы можем отрисовать сетку методом **`.grid()`**:

```
plt.figure(figsize=(10, 5))                   # Задание размера полотна в дюймах
plt.plot(x, y, label = 'sin(x)')              # Параметр label задает описание графика
plt.plot(x, np.cos(x)/2, label = 'cos(x)/2')  # Отрисовка еще одного графика на полотне
plt.title("y = sin(x)")                       # Надпись вверху графика
plt.xlabel('Переменная X')                    # Надпись для оси x
plt.ylabel('Переменная Y')                    # Надпись для оси y
plt.legend()                                  # Отрисовка названий графиков ("легенды")
plt.grid()                                    # Отрисовка сетки
plt.show()                                    # Вывод графика

```

В метод plot можно передавать еще много различных параметров, например:

* **linestyle** - стиль линии
* **label** - описание графика
* **color** - цвет линии
* **linewidth** - ширина линии
* **marker** - маркер
* **markersize** - размер маркера
* **mec** - цвет маркера

и другие (см. полное описание в документации библиотеки).

С помощью этих элементов стиля можно улучшить наглядность графика:

```
plt.figure(figsize=(14, 7))                   # Задание размера полотна в дюймах
plt.plot(x,y , label = "sin(x)", color='#4b0082', linewidth=4,
         marker='h', markerfacecolor='lightgreen', markeredgewidth=2,
         markersize=10, markevery=5)
plt.plot(x, np.cos(x)/2, label = 'cos(x)/2', linewidth=3, color='lightcoral',
         marker='D', markeredgecolor='black', markevery=5)
plt.title("y = sin(x)")                       # Надпись вверху графика
plt.xlabel('Переменная X')                    # Надпись для оси x
plt.ylabel('Переменная Y')                    # Надпись для оси y
plt.legend()                                  # Отрисовка названий графиков ("легенды")
plt.grid()                                    # Отрисовка сетки
plt.show()                                    # Вывод графика

```