ggplot barplot: как отобразить маленькие положительные числа с логарифмированной осью Y

Основная проблема: я хочу отображать данные от 0 до 1,0 в виде восходящей полосы (начиная с 0), но не хочу, чтобы интервалы были одинаково, а журналы.

Я пытаюсь отобразить столбец с пометкой «среднее» в наборе данных ниже в виде столбчатой ​​диаграммы в ggplot, но, поскольку числа очень малы, я хотел бы показать ось y в логарифмическом масштабе, а не логически преобразовывать сами данные. Другими словами, я хочу, чтобы вертикальные столбцы с метками оси Y были 0, 1e-8, 1e-6 1e-4 1e-2 и 1e-0 (то есть от 0 до 1,0, но интервалы масштабируются в логарифмическом масштабе).

Решение, приведенное ниже, не работает, так как столбцы перевернуты.

> print(df)
        type         mean           sd           se snp
V7    outer 1.596946e-07 2.967432e-06 1.009740e-08   A
V8    outer 7.472417e-07 6.598652e-06 2.245349e-08   B
V9    outer 1.352327e-07 2.515771e-06 8.560512e-09   C
V10   outer 2.307726e-07 3.235821e-06 1.101065e-08   D
V11   outer 4.598375e-06 1.653457e-05 5.626284e-08   E
V12   outer 5.963164e-07 5.372226e-06 1.828028e-08   F
V71  middle 2.035414e-07 3.246161e-06 1.104584e-08   A
V81  middle 9.000131e-07 7.261463e-06 2.470886e-08   B
V91  middle 1.647716e-07 2.875840e-06 9.785733e-09   C
V101 middle 3.290817e-07 3.886779e-06 1.322569e-08   D
V111 middle 6.371170e-06 1.986268e-05 6.758752e-08   E
V121 middle 8.312429e-07 6.329386e-06 2.153725e-08   F

Код ниже правильно генерирует сгруппированный барплот с ошибками

ggplot(data=df, aes(x=snp,y=mean,fill=type))+
  geom_bar(stat="identity",position=position_dodge(),width=0.5) + 
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se),width=.3, position=position_dodge(.45)) 

Тем не менее, я хочу сделать журнал по оси Y масштабированным, и поэтому добавляю scale_y_log10 () следующим образом:

 ggplot(data=df, aes(x=snp,y=mean,fill=type))+
  geom_bar(stat="identity",position=position_dodge(),width=0.5) + scale_y_log10() +
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se),width=.3, position=position_dodge(.45)) 

Но странно, что бруски падают сверху, но я просто хочу, чтобы они поднимались (как обычно) и не знал, что я делаю неправильно.

Спасибо

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

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