R 使用堆叠条形图中的多个颜色比例将y轴比例更改为计数

R 使用堆叠条形图中的多个颜色比例将y轴比例更改为计数,r,ggplot2,bar-chart,geom-bar,stackedbarseries,R,Ggplot2,Bar Chart,Geom Bar,Stackedbarseries,我的df如下所示: fruit <- data.frame(Sample=1:100, Fruit=c(rep("Apple", 10), rep("Strawberry", 25), rep("Grape", 20), rep("Watermelon", 15), rep("Lime", 11), rep("Blueberry", 10), rep("Plum", 9)),

我的df如下所示:

fruit <- data.frame(Sample=1:100, 
            Fruit=c(rep("Apple", 10), rep("Strawberry", 25), rep("Grape", 20), 
                  rep("Watermelon", 15), rep("Lime", 11), rep("Blueberry", 10), 
                  rep("Plum", 9)), 
            Color=c(rep("Red", 30), rep("Green", 45), 
                    rep("Blue", 25)), 
            Ripe=c(rep(c(T, F), 50)))+
fruit$Fruit <- factor(fruit$Fruit, unique(fruit$Fruit))+
fruit$Color <- factor(fruit$Color, unique(fruit$Color))
结果是:

我们想要得到的是y轴刻度作为颜色变量的观察计数,而不是频率(百分比)


根据@PoGibas在下面给出的答案,我可以将每种颜色的观察总数放在每个色条上……但我想知道你是否知道如何将每种颜色的观察总数n放在每个色条上。在这种情况下,每个条形图的观察值为两个n,条形图上方的观察值为每种颜色的总n,真实条形图上方的观察值为该特定颜色的真实n…

您的
ggplot2
代码有些过于复杂。您必须删除
scale\u y\u continuous(labels=scales::percent)
才能删除百分比。并移除
stat=“count”
position=“fill”
,以获得观察计数(即使用简单的
geom_bar()


另外,您指定
color=color
,然后用
scale\u color\u手册(值=c(“黑色”、“黑色”、“黑色”))覆盖它。
您的
ggplot2
代码有些过于复杂。您必须删除
scale\u y\u continuous(labels=scales::percent)
才能删除百分比。并移除
stat=“count”
position=“fill”
,以获得观察计数(即使用简单的
geom_bar()


此外,您还可以指定
color=color
,然后用
scale\u color\u手册(值=c(“黑色”、“黑色”、“黑色”))覆盖它。
您还可以使用stat\u count

ggplot(fruit,aes(Color)) +
    stat_count(aes(x=Color,fill=Color, color=Color,alpha=Ripe),geom = "bar",position = "stack")+
    scale_y_continuous()+scale_alpha_discrete(range=c(1,0.6))+
    theme(axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank())+
    scale_color_manual(values = c("Black", "Black", "Black"))+
    guides(fill = guide_legend(override.aes = list(colour = NA)))

您也可以使用统计计数

ggplot(fruit,aes(Color)) +
    stat_count(aes(x=Color,fill=Color, color=Color,alpha=Ripe),geom = "bar",position = "stack")+
    scale_y_continuous()+scale_alpha_discrete(range=c(1,0.6))+
    theme(axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank())+
    scale_color_manual(values = c("Black", "Black", "Black"))+
    guides(fill = guide_legend(override.aes = list(colour = NA)))

太好了!工作起来很有魅力。我知道scale_y_continuous(labels=scales::percent)有点问题,但我不知道如何解决这个问题。谢谢@博尔托利导游很乐意帮忙!在每个条上显示颜色变量观察值的数量如何?我在这里尝试了这段代码
geom_text(stat=“count”、aes(label=…count..、y=…count..)、color=“black”、vjust=-1.6、size=4.3)
它还显示了未成熟的值…但是
vjust
too@guidebortoli我会将其添加为一个单独的数据集(我想把绘图留给
ggplot2
更容易,并且在它之外做所有的计算);创建计数数据集:
foo Great!工作起来很有魅力。我知道这个问题在一定程度上是由于比例连续(标签=比例::百分比)但是我不知道如何解决这个问题。谢谢!@guidebortoli很乐意帮忙!在每个条上显示颜色变量观察值的数量怎么样?我在这里尝试了这段代码
geom_text(stat=“count”,aes(label=…count..,y=…count..),Color=“black”,vjust=-1.6,size=4.3)
它还向我显示了不成熟的值……但
vjust有一个问题too@guidebortoli我会将其添加为一个单独的数据集(我想,将绘图留给
ggplot2
更容易,并在它之外进行所有计算);创建计数数据集:
foo
ggplot(fruit,aes(Color)) +
    stat_count(aes(x=Color,fill=Color, color=Color,alpha=Ripe),geom = "bar",position = "stack")+
    scale_y_continuous()+scale_alpha_discrete(range=c(1,0.6))+
    theme(axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank())+
    scale_color_manual(values = c("Black", "Black", "Black"))+
    guides(fill = guide_legend(override.aes = list(colour = NA)))