Форматирование оси y в проценты в pandas без изменения кода

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для отображения значений оси Y графика в процентной форме используйте класс PercentFormatter модуля matplotlib.ticker. Представим что у вас уже создан график и вы хотите отображать значения оси Y в процентах. Приведенный ниже пример демонстрирует как это сделать:

Python
Скопировать код
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter

data = [0\.1, 0.6, 0.3, 1.0]  # Это ваши данные, представленные в виде долей

plt.plot(data)  # Построение графика
plt.gca().yaxis.set_major_formatter(PercentFormatter(1))  # Применение процентного форматирования
plt.show()  # Отображение графика

Вышеприведенный код конвертирует значения оси Y, и теперь они отображаются от 0% до 100%.

Кинга Идем в IT: пошаговый план для смены профессии

Кастомизация графика

PercentFormatter предоставляет обширные возможности для кастомизации графика. Вы можете изменить следующие параметры:

  • Параметр xmax: позволяющий огранить значение, которое на графике будет соответствовать 100%.
  • Число десятичных знаков: влияющее на точность отображения процентов.
  • Параметр symbol: данный параметр позволяет заменить знак процента на любой другой или вовсе его убрать.

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

Python
Скопировать код
plt.gca().yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=2, symbol='%'))

Усложняем задачу

Для более сложного форматирования, которое не может быть выполнено с помощью PercentFormatter, используйте FuncFormatter:

Python
Скопировать код
from matplotlib.ticker import FuncFormatter

custom_format = lambda x, _: "{:.1f}%".format(x * 100)
plt.gca().yaxis.set_major_formatter(FuncFormatter(custom_format))

В Python 3.6 и новее f-строки являются удобным инструментом форматирования. В более ранних версиях используйте метод str.format. Применяйте форматирование всегда после создания основного графика.

Работаем с Pandas

Если вы используете pandas для построения графика, то форматирование оси Y в проценты не вызовет у вас сложностей:

Python
Скопировать код
ax = df.plot(kind='line')  # 'df' – это DataFrame
ax.yaxis.set_major_formatter(PercentFormatter(1))

Визуализация

Восприятие данных упрощается при их ассоциировании с визуальными образами. Например, представьте, что данные – это дольки равномерно разрезанного арбуза. Каждая долька арбуза представляет собой долю данных на вашем графике:

Номер долькиДоля от арбузаПоказания на оси Y
110%🍉🍉
260%🍉🍉🍉🍉🍉🍉
330%🍉🍉🍉
4100%🍉🍉🍉🍉🍉🍉🍉🍉🍉🍉

Возможные подводные камни

При работе с процентным форматированием можно столкнуться с некоторыми ограничениями и ошибками:

  • Ограничения на величину данных: Ваши числа должны быть в интервале от 0 до 1 для корректного применения PercentFormatter.
  • Дублирование кода: Внесение изменений в деления и метки после применения форматтера может привести к повторению кода.
  • Несоответствие единиц измерения: Убедитесь, что процентное форматирование оси согласуется с вашими данными, чтобы избежать путаницы при интерпретации.

Преимущества Python

Средства форматирования строк в Python помогут вам улучшить визуализацию меток. Например, вы можете установить пользовательские метки делений для оси Y:

Python
Скопировать код
ax.set_yticklabels(['{:.0%}'.format(y) for y in ax.get_yticks()])

Сочетание генератора списков и метода str.format обеспечивает необходимую гибкость для настройки.

Полезные материалы

  1. Matplotlib FuncFormatter Documentation — руководство по индивидуальному форматированию оси Y.
  2. Matplotlib PercentFormatter Documentation — основы процентного форматирования в Matplotlib.
  3. Matplotlib Pyplot Documentation — обзор методов построения графиков в Matplotlib.
  4. Official Matplotlib examples — практические примеры использования методов форматирования.
  5. Matplotlib tutorials — подробное руководство по работе с библиотекой Matplotlib.
  6. Python Data Science Handbook: Introduction to Matplotlib — обширное руководство по визуализации данных в Matlab.