我遇到了一个简单的ggplot麻烦,我需要在其中加入一个对数刻度y轴。我明白ggplot是正确的,一旦我的轴有对数刻度就有弯曲线,但是我需要这些线来连接我的数据线性地指出。
这是我的代码:
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")
我的数据结构如下:
sample concentration EXP
H 0.08 Ex1
H 0.07 Ex2
M 2.00 Ex1
M 0.50 Ex2
R 0.01 Ex1
...
我在问题“yg轴的ggplot2对数刻度导致曲线”中尝试了Zoltáns的建议,但它对我没有用。 (ggplot2 log scale of y axis causing curved lines)
如果有人可以帮助我,我真的很高兴! 谢谢:)
答案 0 :(得分:3)
这是coord_trans
的预期行为,与scale_y_log10
不同。另见: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()
如果您希望y轴标签和网格线看起来更像coord_trans
默认值,请使用scale_y_log10(breaks = scales::pretty_breaks())
。