首页 > 解决方案 > 如何将 ggplot 与 prop.table(table(x) 一起使用?

问题描述

首先,我有一个包含两个分类变量的数据,如下所示:

nombre <- c("A","B","C","A","D","F","F","H","I","J")
sexo <- c(rep("man",4),rep("woman",6))
edad <- c (25,14,25,76,12,90,65,45,56,43)
pais <- c(rep("spain",3),rep("italy",4),rep("portugal",3))

data <- data.frame(nombre=nombre,sexo=sexo,edad=edad,pais=pais)

如果我使用:

prop.table(table(data$sexo,data$pais), margin=1)

我可以看到级别的相对频率,例如Italy (Man=0.25 Woman=0.5)

但问题是,当我尝试绘制时,prop.table(table(x))我得到了一些不同的东西

ggplot(as.data.frame(prop.table(table(data),margin=1)), aes(x=pais ,y =Freq, fill=sexo))+geom_bar(stat="identity")

Y从 0 到 3 的轴上,例如在栏中Italy (Woman=2 Man=2.5) ,我不需要它(而且我不知道显示的是什么),我想要与prop.table(table(x))

我认为问题与 margin=1 有关

谢谢!

标签: rggplot2

解决方案


你需要做同一张桌子

tab = prop.table(table(data$sexo,data$pais), margin=1)
tab = as.data.frame(tab)

然后绘制:

ggplot(tab,aes(x=Var2,y=Freq,fill=Var1)) + geom_col()

或者简单地说:

barplot(prop.table(table(data$sexo,data$pais), margin=1))

推荐阅读