使用log10 trans的带错误栏的条形图

时间:2018-07-22 20:18:36

标签: r ggplot2 bar-chart

我是R和ggplot库的新手,我正在尝试构建带有错误栏的条形图,如下所示:

pd <- position_dodge(0.80)
ggplot(aqp1) + geom_bar( aes(x=Type, y=Error, fill=Set, colour=Set, group=Set), width=0.75, stat="identity", alpha=1, position=pd)
+ geom_errorbar( aes(x=Type, ymin=Error,ymax=Max.Error, colour=NULL, group=Set), position=pd, width=0.1, colour="black", alpha=1, size=0.1) 
+ theme_light() + labs(title="", x="Sizes", y="Relative error (%)") 

enter image description here

唯一的是我想对y轴进行对数缩放,因此我尝试使用scale_y_log10函数:

ggplot(aqp1) + geom_bar( aes(x=Type, y=Error, fill=Set, colour=Set, group=Set), width=0.75, stat="identity", alpha=1, position=pd) 
+ geom_errorbar( aes(x=Type, ymin=Error,ymax=Max.Error, colour=NULL, group=Set), position=pd, width=0.1, colour="black", alpha=1, size=0.1) 
+ theme_light() + labs(title="", x="Sizes", y="Relative error (%)") 
+ scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), labels = trans_format("log10", math_format(10^.x)))

但是我有一个奇怪的结果,误差条的刻度与条形图不同。

enter image description here

我该如何解决?我尝试使用+ ylim(10^-2, 10^1),但不起作用。

1 个答案:

答案 0 :(得分:0)

我只想引用@ eipi10

  

条形图在对数刻度上不能很好地工作,因为条形的基线设置为1(10 ^ 0)而不是零

这说明了为什么图像出错。