繁体   English   中英

如何在一个透明的小图中绘制两个字符变量的频率

[英]How to Plot the Frequency of Two Character Variables on One Barplot Overlaid with Transparency

我有两个大型数据框,其中包含许多类别的字符和/或因子列。 我需要通过覆盖同一条形图上每对变量的频率来比较它们在第一数据帧和第二数据帧中取值的频率。 我希望能够绘制计数或比例。

我能够分别绘制每个图。

ds1 <- data.frame(var1 = as.character(c("7","10","11","4", "7","10","11","4"))) 
ds2 <- data.frame(var2 = c("4","4","7","7", "7","10","11","4"))
ggplot(ds1, aes(var1)) + geom_bar()
ggplot(ds2, aes(var2)) + geom_bar()

但是我在努力:

  1. 将两者放在一起
  2. 增加透明度,使两对条都可见
  3. 地积比例而不是数量

这是一种使用半透明并覆盖的条来进行处理的方法。 我认为将条形图并排放置可能会更清晰一些,如果您愿意,可以将position_identity()更改为position_dodge()

library(ggplot2)
ds1 <- data.frame(var1 = as.character(c("7","10","11","4", "7","10","11","4"))) 
ds2 <- data.frame(var2 = c("4","4","7","7", "7","10","11","4"))

plot.df <- cbind(ds1, ds2)
plot.df <- reshape2::melt(plot.df, id.vars = NULL)

ggplot(plot.df, aes(value, group=variable, fill=variable)) + 
  geom_bar(position = position_identity(), 
           aes(y = ..prop..), 
           alpha=.6,
           color='black')+
  theme_minimal() + ggtitle("Comparing the Frequency of Categories")

编辑:对于您的data.frames不同长度的情况:

ds1$variable <- "ds1"
ds2$variable <- "ds2"

names(ds1) <- names(ds2)

plot.df <- rbind(ds1, ds2)

然后从这里绘图。

reprex软件包 (v0.2.0)于2018-05-10创建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM