如何控制条形图中的值标签的小数位

问题描述 投票:0回答:1

请考虑下图:

enter image description here

此问题是关于如何将堆叠的条形图中的所有值标签保持在小数点后一位,以保持一致性。因此,将-1、2和5分别表示为-1.0、2.0和5.0。这是示例数据

df  <- data.frame(group=c("satisfied", "satisfied",
                      "unsatisfied","unsatisfied",
                      "satisfied", "satisfied", 
                      "unsatisfied","unsatisfied"
                      ), 
                cost=c("low","high","low","high",
                      "low","high","low","high"),     
                treatment=c("treated","treated","treated","treated",
                            "untreated","untreated",
                      "untreated","untreated") ,
                value=c(2.3,8.7,5.0,3.1,9.4,3.1,2.0,-1.0)) 

并且用于生成图形的代码是

#REORDER
df$group <- factor(df$group, levels = c("satisfied", 
                            "unsatisfied"))

ggplot(data=df,aes(y = value, x = group, fill = cost)) +
geom_bar(stat="identity",position='stack') + 
ylab("Y label") +
theme(legend.direction = "horizontal",legend.position = "bottom",
    legend.spacing.x = unit(0.1, 'cm'))+
theme(legend.title=element_blank())+
geom_text(aes(label = ifelse(value !=0, value, "")), 
         position = position_stack(vjust=0.5))+
facet_grid( ~ treatment)

[how to put exact number of decimal places on label ggplot bar chart之后,我试图通过引入]解决此问题>

sprintf("%0.1f", round(value, digits = 2))

进入ggplot函数,但这不会产生所需的输出。非常感谢您对此提供的任何帮助。

考虑下图:这个问题是关于如何将堆叠条形图中的所有值标签保持在小数点后一位,以保持一致性。因此,将-1、2和5表示为-1.0、2.0和5。...] >>

问题是您使用character进行了四舍五入(从而转换为sprintf,丢失了数字信息)之前

。要格式化数字,您需要提供sprintf数字,而不是字符串。它将处理舍入本身。试试这个:
label = ifelse(value !=0, sprintf("%0.1f", value), "")
r ggplot2 decimal bar-chart stacked-chart
1个回答
0
投票

问题是您使用character进行了四舍五入(从而转换为sprintf,丢失了数字信息)之前

© www.soinside.com 2019 - 2024. All rights reserved.