ggplot2中的柱形图使用分类变量作为填充

Posted

技术标签:

【中文标题】ggplot2中的柱形图使用分类变量作为填充【英文标题】:Column chart in ggplot2 using a categorical variable as fill 【发布时间】:2019-06-24 04:58:54 【问题描述】:

所以我正在分析一个包含学生(已删除)、他们的班级年份(2020、2021、2022)以及他们是否接受采访的数据框。我想以图形方式显示每个班级每年申请和实际获得面试的学生人数。

我尝试对此进行编码,但在很多尝试中都收到错误,这告诉我我可能没有正确处理这个问题。

数据:

app <- structure(list(Interview = c("Yes", "Yes", "Yes", "Yes", "Yes", 
"No", "Yes", "No", "No", "Yes", "No", "Yes", "No", "No", "Yes", 
"Yes", "Yes", "Yes", "Yes", "No"), Year = c(2021, 2021, 2020, 
2022, 2022, 2022, 2020, 2021, 2021, 2021, 2020, 2022, 2022, 2021, 
2022, 2020, 2022, 2022, 2020, 2020)), row.names = c(NA, -20L), class = 
c("tbl_df", 
"tbl", "data.frame"))

然后我使用 dplyr 和 ggplot 对数据进行分组并相应地绘制 图书馆(dplyr) 图书馆(ggplot2) 图书馆(gg主题) 库(readxl)

 year_table <- app %>% 
   group_by(Year) %>% 
   summarize(number = n()) %>% 
   mutate(pct=number/sum(number)) %>% 
   arrange(desc(pct))
 year_table

 #interview candidates
 year_table_int <- app_int %>% 
   group_by(Year) %>% 
   summarize(number = n()) %>% 
   mutate(pct=number/sum(number)) %>% 
   arrange(desc(pct))
 year_table

 ggplot(data = year_table, mapping = aes(x = Year, y = number)) +
   geom_col(fill= "darkslategray3") + theme_economist() +
   ggtitle("Distribution of Applicants based on Class Year") +
   geom_text(data=year_table, aes(label=paste0(round(pct*100,1),"%"),
                                  y=number), size=4, vjust = -.5) +
   labs(y = "Number of Applicants")


 #Attempt 2
 a<- 1:200
 ggplot(year_table, aes(x=factor(Year), y=number)) +
   geom_bar(position="dodge", stat="identity",aes(fill=factor(Interview))) +
   coord_cartesian(ylim=c(50, 150)) + scale_y_continuous(breaks=a[a%%10==0]) +
   xlab("Year") + ylab("Number of Applicants") + 
 scale_fill_discrete(name="Interview?") +
   theme(axis.text.x = element_text(size=14))

在这一点上我很困惑,但我已经包含了一个关于我希望它看起来如何的视觉效果。也许使用 geom_bar 可能会更好???不确定,无论我想在 x 轴上显示班级年份,在原因上显示数字(或计数),以及表示申请人总数和接受面试的人数(面试 = 是)的躲避条。

https://imgur.com/a/Lan6HiN

【问题讨论】:

【参考方案1】:

我相信你可以自己设计情节。

ggplot(app, aes(x = Interview, fill = Interview)) +
    geom_bar() + 
    theme_economist() + 
    facet_wrap(~Year) +
    theme(legend.position="none")

【讨论】:

我试图显示仅在获得“是”票的人旁边堆叠的申请人总数。您的代码仅将其分解为是和否。 已编辑,答案,现在呢?

以上是关于ggplot2中的柱形图使用分类变量作为填充的主要内容,如果未能解决你的问题,请参考以下文章

Power BI的柱形图如何由大到小

C#ZedGraph画柱形图问题!急!!!在线等

柱状图怎么做

ggplot2绘制柱形图(2)

细胞周期的柱形图解析

d3 画简单的柱形图