У меня есть следующая проблема: я хотел бы визуализировать дискретную и непрерывную переменную на ящике, в котором последний имеет несколько экстремально высоких значений. Это делает коробку бессмысленной (точки и даже «тело» диаграммы слишком малы), поэтому я хотел бы показать это на шкале log10. Я знаю, что я мог бы исключить экстремальные значения из визуализации, но я не собираюсь.Преобразование только одной оси в шкалу log10 с ggplot2
Давайте посмотрим простой пример с данными алмазов:
m <- ggplot(diamonds, aes(y = price, x = color))
Проблема не является серьезной, но я надеюсь, что вы могли себе представить, почему я хотел бы видеть значение в масштабе log10 , Давайте попробуем:
m + geom_boxplot() + coord_trans(y = "log10")
Как вы можете видеть, ось у log10 масштабируется и выглядит хорошо, но есть проблема с осью х, что делает сюжет очень странно.
Проблема не возникает с scale_log
, но это не опция для меня, так как я не могу использовать пользовательский форматтер таким образом. Например .:
m + geom_boxplot() + scale_y_log10()
Мой вопрос: кто-нибудь знает решение для построения boxplot с log10 шкалы на оси у которых метки могут быть свободно отформатированный с formatter
функции, как в этом thread?
Редактирование вопроса, чтобы помочь на основе отвечающими ответы и комментарии:
Что я действительно после того, как: один log10 трансформированной оси (у) с не научными этикетками. Я хотел бы обозначить его как доллар (formatter=dollar)
или любой пользовательский формат.
Если я пытаюсь @ предложение Хедлите я получаю следующие предупреждения:
> 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
с неизмененными у меток осей:
Т hat - ошибка в 'coord_trans' - но вы можете указать пользовательские метки для' scale_y_log10' ... – hadley
Спасибо @hadley, я должен пропустить что-то, но, например.'+ scale_y_continous (formatter = dollar)' просто не работает. Я не могу видеть результат любого форматирования, и я также получаю три 'In max (x): отсутствие непустых аргументов до max; возвращая сообщения -Inf'. – daroczig
@daroxzig: В примерах, которые я видел для аргумента форматирования, задействованы все цитированные имена, поэтому, возможно, 'formatter =" dollar "'? –