我设法构建了以下图,其中我使用了仅包含geom_text标签的精简图来展示另一图的组内人口:
geom_text标签之间的距离太大,并且组内总体与它们应代表的组在垂直方向上并没有“相当”对齐。
有没有办法改变这个距离?
该图的代码如下:
gymnasiegrov_utfall<-totdata%>%as_tibble() %>%
group_by(gymnasiegrov, totstatus_tri) %>%
summarise(antal = n()) %>%
mutate(andel = antal / sum(antal))%>%
ggplot(.) +
geom_col(mapping = aes(x = gymnasiegrov, y = andel)) +
coord_flip() +
facet_wrap(~totstatus_tri)
gymnasiegrov_utfall_antal<-totdata%>%
ggplot(aes(x=gymnasiegrov))+
geom_text(stat='count',aes(label=..count..),hjust="inward",y=1) +
coord_flip()+
theme_invisible+
scale_y_discrete(breaks=NULL)+
scale_x_discrete(breaks=NULL)
ggarrange(gymnasiegrov_utfall, gymnasiegrov_utfall_antal, ncol=2, widths = c(.85,.15))
每个类别有1个观察值的数据子集:
structure(list(gymnasiegrov = structure(c(1L, 10L, 6L, 7L, 11L,
5L, 16L, 3L, 9L, 14L, 12L, 8L, 13L, 15L, 18L, 4L, 2L, 17L), .Label = c("Oklart",
"friskoleprogram", "Handels- och administrationsprogrammet",
"specialutformat program", "Vård- och Omsorgsprogrammet", "teknikprogrammet",
"komvux", "samhälls- och ekonomiprogrammet", "medieprogrammet",
"naturvetenskapliga programmet", "samhällsvetenskapliga programmet",
"bygg, el, fordon, hantverk, sjöfart, industriteknik", "naturbruksprogrammet",
"estetiska programmet", "Barn- och Fritidsprogrammet", "ekonomiprogrammet/ ekonomi",
"ekonomiprogrammet/ juridik", "Hotell- och Restaurang"), class = c("ordered",
"factor")), totstatus_tri = structure(c(2L, 3L, 1L, 3L, 2L, 3L,
2L, 1L, 1L, 1L, 3L, 3L, 1L, 2L, 1L, 2L, 3L, 1L), .Label = c("pågående studier",
"tidigt avbrott eller återbud", "sent avbrott"), class = c("ordered",
"factor"))), row.names = c(NA, -18L), groups = structure(list(
gymnasiegrov = structure(1:18, .Label = c("Oklart", "friskoleprogram",
"Handels- och administrationsprogrammet", "specialutformat program",
"Vård- och Omsorgsprogrammet", "teknikprogrammet", "komvux",
"samhälls- och ekonomiprogrammet", "medieprogrammet", "naturvetenskapliga programmet",
"samhällsvetenskapliga programmet", "bygg, el, fordon, hantverk, sjöfart, industriteknik",
"naturbruksprogrammet", "estetiska programmet", "Barn- och Fritidsprogrammet",
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik",
"Hotell- och Restaurang"), class = c("ordered", "factor")),
.rows = list(1L, 17L, 8L, 16L, 6L, 3L, 4L, 12L, 9L, 2L, 5L,
11L, 13L, 10L, 14L, 7L, 18L, 15L)), row.names = c(NA,
-18L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
答案 0 :(得分:1)
我仍然认为使用方法described yesterday会更简单,但是如果您喜欢此方法的外观,则可以执行以下操作:
library(ggpubr)
gymnasiegrov_utfall <- totdata %>%
as_tibble() %>%
group_by(gymnasiegrov, totstatus_tri) %>%
summarise(antal = n()) %>%
mutate(andel = antal / sum(antal)) %>%
ggplot(.) +
geom_col(mapping = aes(x = gymnasiegrov, y = andel)) +
coord_flip() +
facet_wrap(~totstatus_tri)
gymnasiegrov_utfall_antal <- totdata %>%
ggplot(aes(x = gymnasiegrov)) +
geom_text(stat = 'count', aes(label = ..count..), y = 1) +
coord_flip() +
theme_pubclean() +
theme(strip.text = element_text(margin = margin(1, 0, 5, 0))) +
labs(y = "\n", x = "") +
scale_y_discrete(breaks = NULL) +
scale_x_discrete(breaks = NULL) +
facet_wrap(.~ "count")
ggarrange(gymnasiegrov_utfall, gymnasiegrov_utfall_antal, ncol = 2, widths = c(.85,.15))