我正在尝试绘制一个涉及两个 geom_textlines 和一个 geom_bar 的图。我认为我的问题与告诉 ggplot 在哪里使用 df 的哪些部分有关。我最接近的方法是过滤longdf
以使 geom_textline 图工作,但这会阻止绘制 geom_bar(我认为)通过阻止filter(vars == "New Wins")
。如您所见,我正在尝试使用完成任务dplyr
。
先谢谢各位的指导和指正!
library(dplyr)
library(tidyverse)
library(geomtextpath)
dummydf <- data.frame(vars=c('Roster','Alumni', 'New Wins'),SP22=c(34,5,4),
FA22=c(31,5,7), SP23=c(31,5,4), FA23=c(37,3,15),SP24=c(29,7,3),FA24=c(NA,NA,11))
longdf <- dummydf %>% pivot_longer(cols=c('SP22','FA22','SP23','FA23','SP24','FA24'),
names_to='semesters', values_to='value')
myplot <-longdf %>%
filter(vars != "New Wins") %>%
ggplot(aes(x=semesters, y=value, group=vars, color=vars)) +
geom_textline(aes(label = vars, hjust = vars), spacing = 100) +
scale_hjust_manual(values = c(0.1, 0.6)) +
scale_y_continuous(n.breaks = 16, limits = c(0, 44)) +
scale_x_discrete(limit = c('SP22','FA22','SP23','FA23','SP24'), expand = c(0,.2)) +
scale_color_manual(values = c("darkorchid2", "steelblue"), guide = "none") %>%
#filter(vars == "New Wins") %>%
ggplot(aes(x=semesters, y=value, color=vars)) +
geom_bar(aes(x = semesters, fill = 'gold1'))
myplot
也许像这样?
x=semesters
是两个 geom 中唯一共有的变量映射,因此最简单的方法可能是在全局中仅定义该变量aes()
。然后我们可以data = ...
为geom_col
图层指定一个自定义变量。