0

我有一个df像这样的数据框:

Id    Var1    Var2    Var3
001   yes     no      yes
002   no      no      yes
003   yes     yes     no

我想创建一个带有 3 个条形图的条形图,它们代表yesnofor 的比例Var1 Var2 Var3。是否可以在ggplot不重塑数据框的情况下做到这一点?

谢谢,

科拉多

4

1 回答 1

1

正如已经提到的,最好重塑数据。

但是,如果您需要使用原始数据框,那么您应该geom_bar()为要出现在绘图上的每一列使用。geom_bar()你应该提供x将这些条分开的值 - 我使用变量名作为字符。fill=position="stack"确保条码堆叠。y=(..count..)/sum(..count..))会计算比例。

df <- read.table(text=
"Id    Var1    Var2    Var3
 001   yes     no      yes
 002   no      no      yes
 003   yes     yes     no",header=T)

library(scales)
library(ggplot2
ggplot(df)+
  geom_bar(aes(x="Val1",fill=Var1,y=(..count..)/sum(..count..)),position="stack")+
  geom_bar(aes(x="Val2",fill=Var2,y=(..count..)/sum(..count..)),position="stack")+
  geom_bar(aes(x="Val3",fill=Var3,y=(..count..)/sum(..count..)),position="stack")+
  scale_y_continuous("Percents",labels = percent) + 
  scale_x_discrete("Values")+
  scale_fill_discrete("Legend_title")

在此处输入图像描述

于 2013-02-18T12:19:32.253 回答