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中的柱形图使用分类变量作为填充的主要内容,如果未能解决你的问题,请参考以下文章