Как изменить ось Y для отображения процентов (%) в графике Python Plotnine?
Как мы можем изменить ось Y на проценты вместо дроби, используя библиотеку Plotnine в Python?
MWE барплота выглядит следующим образом:
from plotnine import *
from plotnine.data import mpg
p = ggplot(mpg) + geom_bar(aes(x='manufacturer', fill='class'), position='fill')
print(p)
Что дает следующий рисунок:
Гистограмма с накоплением с осью Y в виде доли, а не процента
С ggplot2 в R все просто, нужно просто добавить:
+ scale_y_continuous(labels = scales::percent)
Однако я не смог найти, как это сделать в Плотнине.
Любой совет?
2 ответа
Решение
labels
Параметр принимает вызываемый объект, который принимает список точек останова в качестве входных данных. Все, что вам нужно сделать, это преобразовать каждый элемент в списке вручную:
scale_y_continuous(labels=lambda l: ["%d%%" % (v * 100) for v in l])
Аналогичный вопрос, поднятый здесь: https://github.com/has2k1/plotnine/issues/152
from plotnine import *
from plotnine.data import mpg
from mizani.formatters import percent_format
p = ggplot(mpg) + geom_bar(aes(x='manufacturer', fill='class'), position='fill')
p = p + scale_y_continuous(labels=percent_format())
print(p)
другие предопределенные фильтры можно найти здесь: https://mizani.readthedocs.io/en/stable/formatters.html