如何在单个 ggplot 中绘制两个 geom_textlines + 一个 geom_bar?

问题描述 投票:0回答:1

我正在尝试绘制涉及两个 geom_textlines 和一个 geom_bar 的绘图。我认为我的问题与告诉 ggplot 在哪里使用 df 的哪些部分有关。我最接近的是过滤

longdf
以使 geom_textline 绘图工作,但这会通过阻止
filter(vars == "New Wins")
来阻止绘制 geom_bar (我认为)。如您所见,我正在尝试使用
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

r ggplot2 dplyr
1个回答
0
投票

也许像这样?

longdf %>%
  filter(vars != "New Wins") %>%
  ggplot(aes(x=semesters)) + 
  geom_col(aes(y= value), fill = 'gold1',
           data = longdf %>% filter(vars == "New Wins")) +
  geom_textline(aes(y=value, group=vars, color=vars,
                    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") 
© www.soinside.com 2019 - 2024. All rights reserved.