У меня есть следующая проблема: я хотел бы визуализировать дискретную и непрерывную переменную на ящике, в котором последний имеет несколько экстремально высоких значений. Это делает коробку бессмысленной (точки и даже "тело" диаграммы слишком малы), поэтому я хотел бы показать это на шкале 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
, как в этом thread?
Редактирование вопроса, чтобы помочь ответчикам на основе ответов и комментариев:
То, что я действительно после: одна log10 трансформированная ось (y) с не научными метками. Я хотел бы обозначить его как доллар (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: