使用ggplot2动态舍入刻度线

时间:2017-11-17 15:47:10

标签: r ggplot2 axis

我有以下数据框:

rExp <- read.table(text='     samples variable value
UT            F201/203    0.00255836649706595
siCTL         F201/203    0.00911222024608249
siF201/203    F201/203    0.00473993831657716
UT            F203        0.0108815320248598
siCTL         F203        0.0224404694390467
siF201/203    F203        0.0115692755110973
UT            F203/206    0.00392331892967821
siCTL         F203/206    0.010474094476624
siF201/203    F203/206    0.00494613385979193',   header=TRUE)

我使用以下代码创建分组条形图:

p_rEx<- ggplot (data=rExp, aes(x=samples, y=value)) + scale_x_discrete(limits=samples)
p_rEx<- p_rEx + geom_bar (aes(fill = variable),stat = "identity", position = "dodge", colour='black')
p_rEx<- p_rEx + labs(y="relative expression", x='')
p_rEx<- p_rEx + guides(fill=guide_legend(title=NULL))
p_rEx<- p_rEx + scale_fill_manual(values=gray.colors(3, start = 0.3, end = 0.9, gamma = 2.2, alpha = NULL))
p_rEx

结果如下:

enter image description here

我的问题是,刻度线是非常奇怪的数字。 我希望他们更“圆”,例如0.01而不是0.010474094476624

y轴需要保持连续,因为y值可以是10到1 * 10 ^ -10之间的任何值。

我尝试了类似+ scale_y_continuous(breaks= pretty_breaks())的内容,但却给了我一个错误(Error: Discrete value supplied to continuous scale

有没有办法解决这个问题? 谢谢!

编辑: 我不认为这是这个问题的重复: How do I change the number of decimal places on axis labels in ggplot2?

在这里,我要求一个适用于所有y值的动态版本。所以动态调整小数位

1 个答案:

答案 0 :(得分:1)

看起来你刚刚强调你的价值是一个因子变量而不是数字。因此,问题实际上是您的数据导入而不是ggplot。但你可以用

修复它
ggplot(data=rExp, aes(x=samples, y=as.numeric(as.character(value))))