Reputation: 19
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 :)
Upvotes: 0
Views: 2002
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()
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())
.
Upvotes: 3