В любом случае, спасибо @DWin за мотивацию!

я есть следующая проблема: я хотел бы представить дискретную и непрерывную переменную на блокпосте, в котором последний имеет несколько экстремально высоких значений. Это делает коробочный график бессмысленным (точки и даже «тело» диаграммы слишком малы), поэтому я хотел бы показать это в масштабе log10. Я осознаю, что могу исключить крайние значения из визуализации, но я не собираюсь этого делать.

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

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

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

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

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

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

m + geom_boxplot() + scale_y_log10() 

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

Редактирование вопроса, чтобы помочь ответчикам на основе ответов и комментариев:

То, что я действительно после: одна log10 трансформированная ось (у) с не научными метками. Я хотел бы обозначить его как доллар(formatter=dollar) или любой другой формат.

Если я попробую предложение @ 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:

Ответы на вопрос(4)

Ваш ответ на вопрос