Шаг 45.
Язык Python. Визуализация данных. Библиотека Matplotlib. Визуализация данных. Линейный график. Заливка области между графиком и осью

    На этом шаге мы рассмотрим различные варианты такой заливки.

    Для заливки областей используется функция fill_between(). Сигнатура функции:

  fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, 
      data=None, **kwargs)

    Основные параметры функции:

x: массив длины N
Набор данных для оси абсцисс (ось х).

y1: массив длины N или скалярное значение
Набор данных для оси ординат (ось у) - первая кривая.

y2: массив длины N или скалярное значение
Набор данных для оси ординат (ось у) - вторая кривая.

where: массив bool элементов (длины N), optional, значение по умолчанию: None
Задает заливаемый цветом регион, который определяется координатами x[where]: интервал будет залит между x[i] и x[i+1], если where[i] и where[i+1] равны True.

step: {'pre', 'post', 'mid'}, optional
Определяет шаг, если используется step-функция для отображения графика (будет рассмотрена в одном из следующих шагов).

**kwargs
Свойства класса Polygon.

    Создадим набор данных для эксперимента и отобразим график с заливкой:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 5, 0.01)
y = np.cos(x * np.pi)
plt.plot(x, y, c='r')
plt.fill_between(x, y)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 1.


Рис.1. График с заливкой (пример 1)

    Изменим правила заливки:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 5, 0.01)
y = np.cos(x * np.pi)
plt.plot(x, y, c='r')
plt.fill_between(x, y, where=(y > 0.75) | (y < -0.75))
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 2.


Рис.2. График с заливкой (пример 2)

    Используя параметры y1 и y2, можно формировать более сложные решения. Заливка области между 0 и у при условии, что у >= 0:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 5, 0.01)
y = np.cos(x * np.pi)
plt.plot(x, y, c='r')
plt.fill_between(x, y, where=(y > 0))

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 3.


Рис.3. График с заливкой (пример 3)

    Заливка области между 0.5 и у при условии, что у >= 0.5:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 5, 0.01)
y = np.cos(x * np.pi)
plt.plot(x, y, c='r')
plt.grid()
plt.fill_between(x, 0.5, y, where=y >= 0.5)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 4.


Рис.4. График с заливкой (пример 4)

    Заливка области между у и 1:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 5, 0.01)
y = np.cos(x * np.pi)
plt.plot(x, y, c='r')
plt.grid()
plt.fill_between(x, y, 1)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 5.


Рис.5. График с заливкой (пример 5)

    Вариант двухцветной заливки:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 5, 0.01)
y = np.cos(x * np.pi)
plt.plot(x, y, c='r')
plt.grid()
plt.fill_between(x, y, where=y >= 0, color='g', alpha=0.3)
plt.fill_between(x, y, where=y <= 0, color='r', alpha=0.3)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 6.


Рис.6. График с заливкой (пример 6)

    На следующем шаге мы рассмотрим настройку маркировки графиков.




Предыдущий шаг Содержание Следующий шаг