ggplot boxplot - длина усов с логарифмической осью

Я пытаюсь создать горизонтальное поле с логарифмической осью, используя ggplot2. Но длина усов не так.

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

Некоторые данные

library(ggplot2)
library(reshape2)
set.seed(1234)
my.df <- data.frame(a = rnorm(1000,150,50), b = rnorm(1000,500,150))
my.df$a[which(my.df$a < 5)] <- 5
my.df$b[which(my.df$b < 5)] <- 5

Если я построю это с использованием базы Rboxplot(), Все отлично

boxplot(my.df, log="x", horizontal=T)

Но с ggplot,

my.df.long <- melt(my.df, value.name = "vals")
ggplot(my.df.long, aes(x=variable, y=vals)) +
  geom_boxplot() +
  scale_y_log10(breaks=c(5,10,20,50,100,200,500,1000), limits=c(5,1000)) +
  theme_bw() + coord_flip()

Я получаю этот график, в котором усы имеют неправильную длину (см., Например, как много дополнительных выбросов ниже усов и ни одного выше).

Обратите внимание, что без учета бревен ggplot имеет правильную длину.

ggplot(my.df.long, aes(x=variable, y=vals)) +
  geom_boxplot() +
  theme_bw() + coord_flip()

Как создать горизонтальный логарифмический блок-график, используя ggplot с усиками правильной длины? Желательно, чтобы усы расширялись в 1,5 раза по IQR.

Обновить

Как объяснилВот, Можно использоватьcoord_trans(y = "log10") вместоscale_y_log10, что приведет к вычислению статистикидо преобразование данных.тем не мение, coord_trans нельзя использовать в сочетании сcoord_flip, Таким образом, это не решает проблему создания горизонтальных прямоугольников с осью журнала.

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

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