Настройте logtransformed этикетки в ggplot - PullRequest
0 голосов
/ 06 января 2020

Привет,

Я создал барплот с разными категориями. Все категории измеряются по одной шкале, но ценность каждой категории находится на разных уровнях. Лучше всего преобразовать шкалу y по log10, чтобы показать все категории.

Это очень просто с этим кодом:

scale_y_continuous(trans = log10_trans(),
                 breaks = trans_breaks("log10", function(x) 10^x),
                 labels = label_number_auto())

Теперь я хочу настроить метки. Поскольку я показываю расходы по разным категориям, было бы хорошо обозначить ось у "0,001 млн. Евро", "0,01 млн. Евро", "0,1 млн. Евро", "1 млн. Евро", "10 млн. Евро" и т. Д. вместо 1000, 10000, 100000, 1000000, 10000000 и т. д.

Как изменить метки?

#labels = paste(label_number_auto()/1000000,"Mio€")

не работает.

Спасибо за любая подсказка.

При необходимости создаю пример: -)

V

1 Ответ

1 голос
/ 06 января 2020

Используйте функцию форматирования для меток и преобразуйте их в лог-масштаб «вручную»:

ggplot(diamonds, aes(color, log10(price))) + 
    geom_boxplot() +  
    scale_y_continuous(labels = function(x) paste(round(10^x)/1000, "Tsd. €"))

modified scale

Протестировано с помощью ggplot 3.2 .0.

Тот факт, что две шкалы идентичны, можно увидеть без изменений:

ggplot(diamonds, aes(color, price)) + 
    geom_boxplot()

original scale

...