如何将ggplot与prop.table(table(x)一起使用?

时间:2019-12-10 13:48:10

标签: r ggplot2

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

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相关的

谢谢!

2 个答案:

答案 0 :(得分:0)

您可能正在寻找类似position = "dodge"

的东西

如果我对您的数据执行以下操作:

P <- prop.table(table(data$sexo,data$pais), margin=1)
ggplot(as.data.frame(P), aes(x = Var2, y = Freq, fill = Var1)) + 
  geom_bar(stat="identity", position = "dodge")

我输出以下图形:

enter image description here

答案 1 :(得分:0)

您需要制作同一张桌子

$arrayVariable =  array (
        "Usuario"  => "user",
        "Clave" => "test"

    );
    $res = urlencode(json_encode($arrayVariable));

然后情节:

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()