Форматирование оси y в проценты в pandas без изменения кода
Быстрый ответ
Для отображения значений оси Y графика в процентной форме используйте класс PercentFormatter
модуля matplotlib.ticker
. Представим что у вас уже создан график и вы хотите отображать значения оси Y в процентах. Приведенный ниже пример демонстрирует как это сделать:
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%.
Кастомизация графика
PercentFormatter
предоставляет обширные возможности для кастомизации графика. Вы можете изменить следующие параметры:
- Параметр
xmax
: позволяющий огранить значение, которое на графике будет соответствовать 100%. - Число десятичных знаков: влияющее на точность отображения процентов.
- Параметр
symbol
: данный параметр позволяет заменить знак процента на любой другой или вовсе его убрать.
Пример применения настроек:
plt.gca().yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=2, symbol='%'))
Усложняем задачу
Для более сложного форматирования, которое не может быть выполнено с помощью PercentFormatter
, используйте FuncFormatter
:
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 в проценты не вызовет у вас сложностей:
ax = df.plot(kind='line') # 'df' – это DataFrame
ax.yaxis.set_major_formatter(PercentFormatter(1))
Визуализация
Восприятие данных упрощается при их ассоциировании с визуальными образами. Например, представьте, что данные – это дольки равномерно разрезанного арбуза. Каждая долька арбуза представляет собой долю данных на вашем графике:
Номер дольки | Доля от арбуза | Показания на оси Y |
---|---|---|
1 | 10% | 🍉🍉 |
2 | 60% | 🍉🍉🍉🍉🍉🍉 |
3 | 30% | 🍉🍉🍉 |
4 | 100% | 🍉🍉🍉🍉🍉🍉🍉🍉🍉🍉 |
Возможные подводные камни
При работе с процентным форматированием можно столкнуться с некоторыми ограничениями и ошибками:
- Ограничения на величину данных: Ваши числа должны быть в интервале от 0 до 1 для корректного применения
PercentFormatter
. - Дублирование кода: Внесение изменений в деления и метки после применения форматтера может привести к повторению кода.
- Несоответствие единиц измерения: Убедитесь, что процентное форматирование оси согласуется с вашими данными, чтобы избежать путаницы при интерпретации.
Преимущества Python
Средства форматирования строк в Python помогут вам улучшить визуализацию меток. Например, вы можете установить пользовательские метки делений для оси Y:
ax.set_yticklabels(['{:.0%}'.format(y) for y in ax.get_yticks()])
Сочетание генератора списков и метода str.format
обеспечивает необходимую гибкость для настройки.
Полезные материалы
- Matplotlib FuncFormatter Documentation — руководство по индивидуальному форматированию оси Y.
- Matplotlib PercentFormatter Documentation — основы процентного форматирования в Matplotlib.
- Matplotlib Pyplot Documentation — обзор методов построения графиков в Matplotlib.
- Official Matplotlib examples — практические примеры использования методов форматирования.
- Matplotlib tutorials — подробное руководство по работе с библиотекой Matplotlib.
- Python Data Science Handbook: Introduction to Matplotlib — обширное руководство по визуализации данных в Matlab.