Как сделать scale_y_log10, чтобы отметки в 0.01.0.1,1 в ggplot
Я написал следующий код, чтобы сделать сюжет
pd<- position_dodge(.2) # # move them .05 to the left and right
pm25 <- ggplot(data, aes(x=CombSEG, y=conc,shape=A,color=A, lty=A, group=A)) +
geom_point() +
geom_line() +
geom_errorbar(aes(ymin=conc-se, ymax=conc+se),
width=.1, position=pd) +
theme_bw()+
limits(c(0
scale_y_log10(breaks=c(0.01,0.1,1),labels=c(0.01,0.1,1))
Автоматические разрывы шкалы составляют 10 ^ -1,8, 10 ^ -1,6, 10 ^ -1,4... 10 ^ -0,4. Мне бы хотелось, чтобы самый низкий тик был равен 0,01, а максимальная отметка - 1.
Благодарим вас за помощь.
Редактирование. Вот как выглядит сюжет после того, как я попробовал свой код.
![enter image description here]()
Ответы
Ответ 1
Используйте аргументы breaks
и labels
scale_y_log10
(читайте о них здесь).
# make up some sample data
df <- data.frame(x=1:100,y=10^-(2*runif(100)))
ggplot(df,aes(x=x,y=y)) + geom_point() + scale_y_log10()
Похож:
![enter image description here]()
Затем, чтобы изменить шкалу log10 для пользовательских разрывов на .01,.1 и 1, используйте аргумент breaks
:
ggplot(df,aes(x=x,y=y)) + geom_point() + scale_y_log10(breaks=c(.01,.1,1))
Похож:
![enter image description here]()
Наконец, если вы хотите, чтобы метки также были 0,1,.1 и 1, используйте аргумент labels
:
ggplot(df,aes(x=x,y=y)) + geom_point() +
scale_y_log10(breaks=c(.01,.1,1),labels=c(.01,.1,1))
![enter image description here]()
Ответ 2
Использовать Coord_trans() вместо scale()
df <- data.frame(x=1:100,y=10^-(2*runif(100)))
ggplot(df,aes(x=x,y=y)) + geom_point() + coord_trans(y = "log10")
![enter image description here]()