«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать прерывистые оси в Matplotlib?

Как создать прерывистые оси в Matplotlib?

Опубликовано 26 ноября 2024 г.
Просматривать:888

How to Create Discontinuous Axes in Matplotlib?

Создание прерывистых осей в Matplotlib

Введение:

При создании графиков с использованием Matplotlib Обычно используется непрерывная ось X. Однако могут быть случаи, когда желательна прерывистая ось, когда в значениях оси X возникает разрыв или скачок. Это может быть полезно для отображения данных с отсутствующими или редко распределенными значениями.

Использование подграфиков:

Один из подходов к созданию прерывистой оси — использование подграфиков. Каждому подграфику может быть присвоен различный диапазон значений оси X, что приводит к разрыву между подграфиками. Вот простой пример:

import matplotlib.pyplot as plt

x1 = np.linspace(0, 5, 100)
y1 = np.sin(x1)

x2 = np.linspace(10, 15, 100)
y2 = np.cos(x2)

plt.subplot(1, 2, 1)
plt.plot(x1, y1)

plt.subplot(1, 2, 2)
plt.plot(x2, y2)

plt.show()

Преобразование пользовательской оси:

Другой метод создания прерывистой оси — использование преобразования пользовательской оси. Определив новый класс преобразования, мы можем указать, как данные сопоставляются с осью. Следующий код демонстрирует этот подход:

import matplotlib.pyplot as plt
from matplotlib.transforms import Transform
from matplotlib.ticker import LogLocator

class DiscontinuousTransform(Transform):
    def __init__(self, breaks):
        Transform.__init__(self)
        self.breaks = breaks

    def transform(self, values):
        new_values = values.copy()
        for break in self.breaks:
            new_values[values > break]  = 1
        return new_values

    def inverted(self):
        return InvertedDiscontinuousTransform(self.breaks)

class InvertedDiscontinuousTransform(Transform):
    def __init__(self, breaks):
        Transform.__init__(self)
        self.breaks = breaks

    def transform(self, values):
        new_values = values.copy()
        for break in self.breaks:
            new_values[values >= break] -= 1
        return new_values

    def inverted(self):
        return DiscontinuousTransform(self.breaks)

x = np.linspace(0, 10, 100)
y = np.sin(x)

trans = DiscontinuousTransform([5])
locator = LogLocator(base=10)
locator.set_params(minor_locator=None)

plt.plot(x, y, transform=trans)

plt.gca().xaxis.set_major_locator(locator)
plt.gca().xaxis.set_major_formatter(plt.FormatStrFormatter("%0.0f\n(pert)"))

plt.show()

Вывод:

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3