R 使用ggplot创建多个变量的组合条形图

R 使用ggplot创建多个变量的组合条形图,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,我正在尝试使用以下数据创建频率(在%terms中)条形图: >fulldata Type Category Sal 0 Sal 0 Sal 1 Sal 0 Sal 1 Sal 1 Self 1 Self 0 Self 1 Self 0 Self 0 因此,我试图创建一个条形图(使用ggplot),它在fulldata中同时显

我正在尝试使用以下数据创建频率(在
%terms
中)条形图:

>fulldata
Type Category
Sal         0
Sal         0
Sal         1
Sal         0
Sal         1
Sal         1
Self        1
Self        0
Self        1
Self        0
Self        0
因此,我试图创建一个条形图(使用ggplot),它在fulldata中同时显示
Sal
Self
的百分比,在
Category==1
中同时显示
Sal
Self
的百分比(标签为%value)。 我试图通过过滤fulldata中的
Category==1
来创建一个单独的数据框,但它们彼此重叠。我尝试了以下方法:

> Category1 = fulldata[which(fulldata$Category==1),]

ggplot(fulldata, aes(x=Type,y = (..count..)/sum(..count..)))+
    geom_bar()+
    geom_label(stat = "count", aes(label=round(..count../sum(..count..),3)*100), 
               vjust=1.2,size=3, format_string='{:.1f}%')+
    scale_y_continuous(labels = scales::percent)+
    labs(x = "Type", y="Percentage")+
    geom_bar(data = Category1, position = "dodge", color = "red")

*原始数据大约有80000行。

一个可能的解决方案是从计算
ggplot2
的所有比例开始

这里有一个假例子:

df%分组依据(类别、类型)%%>%count()%%>%
透视图(名称从=类别,值从=n)%>%
突变(总数=`0`+`1`)%>%
枢轴长度(-Type,name_to=“Category”,value_to=“n”)%>%
组别(类别)%>%
变异(百分比=n/总和(n))
#一个tibble:6x4
#组别:组别[3]
类型类别n%
1 Sal 0 27 0.458
2萨尔1220.537
3总人数490.49
4自0 32 0.542
5自我1190.463
6自我总计51 0.51
然后,如果您的序列是
ggplot2
,则可以在一个序列中获得条形图:

df%>%分组依据(类别、类型)%>%count()%>%
透视图(名称从=类别,值从=n)%>%
突变(总数=`0`+`1`)%>%
枢轴长度(-Type,name_to=“Category”,value_to=“n”)%>%
组别(类别)%>%
变异(百分比=n/和(n))%>%
ggplot(aes(x=重新排序(类别,描述(类别)),y=百分比,填充=类型))+
geom_col()+
几何图形文本(aes(标签=比例::百分比(百分比)),位置=位置堆栈(0.5))+
比例y连续(标签=比例::百分比)+
实验室(y=“百分比”,x=“类别”)


它回答了你的问题吗?

有没有什么方法可以直接使用ggplot而不是创建一个新的频率表,因为我有很多变量?在
ggplot2
中这样做真的很难,因为你有“类别计数”和“全部计数”这两种方法,这非常棘手。我编辑了我的答案,向您展示了如何在单个管道序列中进行操作,而无需计算各种类别。如果可以,请告诉我。我收到以下错误:``错误:此tidyselect接口尚不支持谓词。``我从未见过此错误。您使用的是哪个版本的
tidyverse
R
Rstudio
?你试过我提供的例子了吗?