Pauline
Pauline

Reputation: 19

ggplot log scale y axis straight lines

I am having troubles with a simple ggplot that I need to incorporate a log scale y axis in. I understand that ggplot is right with curving lines once my axis has the log scale, but I need the lines to still connect my data points linearly.

This is my code:

forexample<-transform(example, EXP=factor(EXP, levels=unique(EXP)))
plot<-ggplot(forexample, aes(x=EXP, y=concentration, shape=sample)) 
+ stat_summary(aes(group = sample), fun.y = mean, geom = 'line', alpha=1, size=0.5) 
+ stat_summary(aes(group = sample), fun.y = mean, geom = 'point',    alpha=1, size=4) +  
theme_bw() + 
coord_trans(y = "log10") 

my data is structured like this:

sample   concentration   EXP 
H        0.08            Ex1
H        0.07            Ex2
M        2.00            Ex1 
M        0.50            Ex2
R        0.01            Ex1

...

I tried Zoltáns suggestion in the question "ggplot2 log scale of y axis causing curved lines" but it didnt work out for me. (ggplot2 log scale of y axis causing curved lines)

I would be really really glad if somebody could help me with this! Thank you :)

enter image description here

Upvotes: 0

Views: 2002

Answers (1)

Brian
Brian

Reputation: 8275

This is the intended behavior of coord_trans, and is distinct from scale_y_log10. See also: https://stackoverflow.com/a/25257463/3330437

require(dplyr)   # for data construction
require(scales)  # for modifying the y-axis

data_frame(x = rep(letters, 3), 
           y = rexp(26*3), 
           sample = rep(c("H", "M", "R"), each = 26)) %>% 
  ggplot(aes(x, y, shape = sample))  + theme_bw() +
  geom_point() + geom_path(aes(group = sample)) + 
  scale_y_log10()

enter image description here

If you want the y-axis labels and gridlines to look more like the coord_trans defaults, use scale_y_log10(breaks = scales::pretty_breaks()).

enter image description here

Upvotes: 3

Related Questions