我想绘制两个细胞群体之间的平均差异,这是非常有意义的(P < 0.001)。然而,使用的规模不适合看到这种差异。这里是我的代码:如何使用R改变y尺度,以大步骤开始,然后以短步骤完成,以突出处理之间的差异?
ggplot(sh2_sum, aes(treatment,diameter,fill=treatment)) +
geom_bar(colour='black', width=.7, position=position_dodge(),
stat='identity',size=.2) +
coord_cartesian(ylim=c(0, .4)) +
xlab("") + ylab("Diámetro de la cabeza de la espina (µm)") +
scale_fill_manual(values=c("#009900", "#990000"),name='') +
geom_errorbar(aes(ymin=diameter, ymax=diameter+se),width=.3,
size=.2,position=position_dodge(.7)) +
theme(legend.direction='horizontal',legend.position=c(.5325,-.085),
plot.margin=unit(c(0,1,1,1),'cm'), axis.text.x = element_blank()) +
annotate("text", x=2, y=.355, label="* * *")
这是图我得到:
我曾尝试使用scale_y_log10()
但我得到以下错误:
Error in seq.default(min, max, by = by) : 'from' must be a finite number In addition: Warning message: Transformation introduced infinite values in continuous y-axis
我会喜欢使用scale_y_sqrt
这种类型的值,从0到3的值很短,然后从3到4的值很大,所以差值是可见的ible 任何想法?
我想你应该考虑放大一下你对'coord_cartesian'感兴趣的领域,或者把'geom_bar'完全放在'geom_pointrange'的位置,而不是引入任意的尺度转换 –
平方根和日志会放大'y'较小时的差异,'y'较大时的压缩值。翘曲你的数据,使其看起来相对差异比实际大,你会想要某种指数变换,也许'exp(y)'或'y^2'。或者,不那么具有欺骗性,按照Mikko的建议 - 线图或散点图预计不会从0开始,因此您可以更多地关注差异而不是绝对量级。 – Gregor