相关疑难解决方法(0)

创建堆叠的条形图,其中每个堆栈按比例缩放为100%

我有一个像这样的data.frame:

df <- read.csv(text = "ONE,TWO,THREE
                       23,234,324
                       34,534,12
                       56,324,124
                       34,234,124
                       123,534,654")
Run Code Online (Sandbox Code Playgroud)

我想生成一个百分比条形图,看起来像这样(在LibreOffice Calc中制作): 在此输入图像描述

因此,条形应该标准化,因此所有堆叠具有相同的高度并且总和为100%.到目前为止,我所能获得的是一个堆积的条形图(不是百分比),使用:

barplot(as.matrix(df))
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

r ggplot2

61
推荐指数
4
解决办法
11万
查看次数

将百分比标签添加到堆叠条形图

我已经成功地在 R 中制作了一个堆叠条形图,其中几个不同类别的百分比加起来为 100%。我在这里制作了一个示例数据框。

example.Category<- c("Cat1","Cat2","Cat3","Cat4","Cat5","Cat6")
percent.good <- c(.25,.29,.45,.5,.8,.82)
example.data <- data.frame(example.Category,percent.good)
example.data$percent.bad <- (1-example.data$percent.good)
Run Code Online (Sandbox Code Playgroud)

数据框看起来像这样。

     example.Category percent.good percent.bad
1             Cat1         0.25        0.75
2             Cat2         0.29        0.71
3             Cat3         0.45        0.55
4             Cat4         0.50        0.50
5             Cat5         0.80        0.20
6             Cat6         0.82        0.18
Run Code Online (Sandbox Code Playgroud)

然后我使用 reshape 包中的melt来得到这个......

example.melt <- melt(example.data, id.vars="example.Category")

   example.Category     variable value
1              Cat1 percent.good  0.25
2              Cat2 percent.good  0.29
3              Cat3 percent.good  0.45
4              Cat4 percent.good  0.50
5              Cat5 percent.good  0.80
6              Cat6 percent.good  0.82
7              Cat1  percent.bad …
Run Code Online (Sandbox Code Playgroud)

r bar-chart ggplot2 geom-text

3
推荐指数
2
解决办法
2万
查看次数

ggplot2:使用位置==填充时向百分比堆积图添加标签?

您好,当堆栈图标准化时,我似乎无法正确地将标签添加到堆栈图上。例如,

specie <- c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) )
condition <- rep(c("normal" , "stress" , "Nitrogen") , 4)
value <- abs(rnorm(12 , 0 , 15))
data <- data.frame(specie,condition,value)
data$value = round ( data$value, 2 )


# Stacked + percent
ggplot(data, aes(fill=condition, y=value, x=specie)) + 
  geom_bar(position="fill", stat="identity") 
Run Code Online (Sandbox Code Playgroud)

上面将产生一个标准化的堆栈图,但是当我添加

  geom_text(aes(label=value),
            position=position_stack(vjust=0.5))
Run Code Online (Sandbox Code Playgroud)

它不符合规范化。有办法解决这个问题吗?它类似于链接,但不完全是因为我不需要计算,而且我还添加了 stat="identity"

提前致谢。

r ggplot2

1
推荐指数
1
解决办法
54
查看次数

标签 统计

ggplot2 ×3

r ×3

bar-chart ×1

geom-text ×1