Преобразуйте только одну ось в шкалу log10 с помощью ggplot2

У меня следующая проблема: я хотел бы визуализировать дискретную и непрерывную переменную на коробчатой ​​диаграмме, в которой последняя имеет несколько экстремально высоких значений. Это делает коробчатую диаграмму бессмысленной ( точки и даже "тело" диаграммы слишком малы), поэтому я хотел бы показать это в масштабе log 10. Я знаю, что могу не учитывать крайние значения при визуализации, но я не собираюсь to.

Давайте посмотрим на простой пример с данными алмазов:

m <- ggplot(diamonds, aes(y = price, x = color))

alt text

Проблема здесь несерьезная, но я надеюсь, вы понимаете, почему я хотел бы видеть значения в масштабе log10. Давайте попробуем:

m + geom_boxplot() + coord_trans(y = "log10")

alt text

Как вы можете видеть, ось Y масштабирована по логарифму 10 и выглядит нормально, но есть проблема с осью x, что делает график очень странным.

Проблема не возникает с scale_log , но это не вариант для меня , так как я не могу использовать пользовательский форматер таким образом. Например:

m + geom_boxplot() + scale_y_log10() 

alt text

Мой вопрос: знает ли кто-нибудь решение построить коробчатую диаграмму со шкалой log10 по оси Y, метки которой можно свободно форматировать с помощью функции форматирования , как в этом потоке ?


Редактирование вопроса для помощи респондентам на основе ответов и комментариев:

Что я действительно ищу: одна преобразованная ось (y) в лог10 с ненаучными метками. Я хотел бы обозначить это как доллар (форматтер = доллар) или любой настраиваемый формат.

Если я попробую предложение @ hadley, я получу следующие предупреждения:

> m + geom_boxplot() + scale_y_log10(formatter=dollar)
Warning messages:
1: In max(x) : no non-missing arguments to max; returning -Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In max(x) : no non-missing arguments to max; returning -Inf

С неизмененными метками оси y:

alt text

38
задан Community 23 May 2017 в 11:47
поделиться