2016-07-14 100 views
5

如何在ggplot條形圖標籤上指定精確的小數位數?如何在標籤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),但它不起作用。

回答

10

您可以嘗試以下操作,將其舍入爲兩位數並在小數點後打印兩位數字。

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)) 
相關問題