Столбчатая диаграмма Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Введение

Matplotlib - это популярная библиотека Python, используемая для визуализации данных. Она предоставляет широкий спектр инструментов для создания диаграмм, графиков и других визуализаций. В этом уроке вы научитесь создавать столбчатую диаграмму с градиентами с использованием Matplotlib.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки, это NumPy и Matplotlib. NumPy - это библиотека, используемая для численных вычислений, в то время как Matplotlib - библиотека для визуализации данных.

import matplotlib.pyplot as plt
import numpy as np

Задаем случайный种子

Мы установим случайный种子,чтобы гарантировать, что каждый раз при запуске кода мы получаем одинаковые случайные числа. Это делается с помощью функции np.random.seed().

np.random.seed(19680801)

Определяем функцию для градиентного изображения

Нам нужно определить функцию, которая будет создавать градиентное изображение на основе цветовой карты. Эта функция будет принимать объект оси, направление градиента и диапазон цветовой карты для использования. Затем функция сгенерирует градиентное изображение и вернет его.

def gradient_image(ax, direction=0.3, cmap_range=(0, 1), **kwargs):
    """
    Рисует градиентное изображение на основе цветовой карты.

    Параметры
    ----------
    ax : Axes
        Ось, на которой будет нарисовано изображение.
    direction : float
        Направление градиента. Это число в диапазоне от 0 (=вертикальное) до 1 (=горизонтальное).
    cmap_range : float, float
        Доля (cmin, cmax) цветовой карты, которая должна быть использована для градиента, где полная цветовая карта составляет (0, 1).
    **kwargs
        Другие параметры передаются в `.Axes.imshow()`.
        В частности, *cmap*, *extent* и *transform* могут быть полезными.
    """
    phi = direction * np.pi / 2
    v = np.array([np.cos(phi), np.sin(phi)])
    X = np.array([[v @ [1, 0], v @ [1, 1]],
                  [v @ [0, 0], v @ [0, 1]]])
    a, b = cmap_range
    X = a + (b - a) / X.max() * X
    im = ax.imshow(X, interpolation='bicubic', clim=(0, 1),
                   aspect='auto', **kwargs)
    return im

Определяем функцию для градиентной полосы

Далее нам нужно определить функцию, которая будет создавать градиентную полосу. Эта функция будет принимать объект оси, координаты x и y полосы, ширину полосы и нижнюю позицию полосы. Затем функция создаст градиентное изображение для каждой полосы и вернет его.

def gradient_bar(ax, x, y, width=0.5, bottom=0):
    for left, top in zip(x, y):
        right = left + width
        gradient_image(ax, extent=(left, right, bottom, top),
                       cmap=plt.cm.Blues_r, cmap_range=(0, 0.8))

Создаем график

Теперь мы можем создать график. Сначала мы создадим фигуру и объект оси. Затем мы установим пределы по осям x и y. Мы создадим градиентный фон с использованием функции gradient_image(). Наконец, мы создадим случайный набор данных и используем функцию gradient_bar() для создания столбчатой диаграммы.

fig, ax = plt.subplots()
ax.set(xlim=(0, 10), ylim=(0, 1))

## background image
gradient_image(ax, direction=1, extent=(0, 1, 0, 1), transform=ax.transAxes,
               cmap=plt.cm.RdYlGn, cmap_range=(0.2, 0.8), alpha=0.5)

N = 10
x = np.arange(N) + 0.15
y = np.random.rand(N)
gradient_bar(ax, x, y, width=0.7)
plt.show()

Резюме

В этом уроке вы узнали, как создать столбчатую диаграмму с градиентами с использованием Matplotlib. Вы узнали, как определить функцию для градиентного изображения и функцию для градиентной полосы, а также как создать график с использованием этих функций. Вы также узнали, как установить случайный种子 и как импортировать необходимые библиотеки.