如何在标签ggplot条形图上输入确切的小数位数

时间:2016-07-14 09:00:33

标签: r ggplot2 bar-chart

如何在ggplot条形图标签上指定确切的小数位数?

数据:

strefa  <- c(1:13)
a       <- c(3.453782,3.295082,3.137755,3.333333,3.500000,3.351351,3.458824,3.318681,3.694175,3.241379,3.138298,3.309524,3.380000)
srednie <- data.frame(strefa,a)

代码是:

ggplot(srednie, aes(x=factor(strefa), y=a, label=round(a, digits = 2))) +
  geom_bar(position=position_dodge(), stat="identity",  colour="darkgrey", width = 0.5) +
  theme(legend.position="none",axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(size = 4, hjust = 1.2) +
  coord_flip(ylim = c(1,6))+
  xlab("") +
  ylab("")

如您所见,在标题为5和2的条形图上,标签仅限于小数点后第1位。即使有3.000000或5.999999,如何显示2位小数?在这种情况下,我想显示3.00和6.00。

我尝试用作aes参数label=round(a, digits = 2),但它不起作用。

1 个答案:

答案 0 :(得分:20)

您可以尝试以下操作,因为它会舍入到两位数,并在小数点后打印两位数。

ggplot(srednie, aes(x=factor(strefa), y=a, label=sprintf("%0.2f", round(a, digits = 2)))) +
  geom_bar(position=position_dodge(), stat="identity",  colour="darkgrey", width = 0.5) +
  theme(legend.position="none",axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(size = 4, hjust = 1.2) +
  coord_flip(ylim = c(1,6))+
  xlab("") +
  ylab("")

唯一的修改是改变你的代码

round(a, digits = 2)

sprintf("%0.2f", round(a, digits = 2))

enter image description here