geom_path() 散点图 ggplot2

geom_path() Scatterplot ggplot2

我正在尝试创建一个类似于 one and this has more explanation

的连接散点图

从本质上讲,我试图在一张图表上显示劳动力中人数下降的情况(以他们的人数衡量)。第二张图显示同期失业率的变化。

这是我的代码:

# ggplot2 call:
Unemployment_Outflows %>%
  ggplot( aes(x=unemployment_rate, y=labor, label=year)) +
  # Custom the Y scales:
  scale_y_continuous() +
geom_line( color="grey") +
    geom_point(shape=21, color="black", fill="#69b3a2", size=3)
  geom_segment(aes(
                    xend=c(tail(unemployment_rate, n=-1), NA), 
                    yend=c(tail(labor, n=-1), NA)
                  )
      ) 

但是,如您所见,线条和阴影区域都不可见,我收到以下错误:

"geom_path:每组只有一个观察,需要调整组审美吗?"

年 改变 change_perc unemployment_rate 劳工

*年份 (chr) 劳动力 unemployment_rate (dbl) (dbl)

2015 年第 4 季度 8416681 0 NA
2016 年第四季度 8492965 12.34717
2017 年第四季度 7907511 12.83452
2018 年第四季度 6895514 12.74767
2019 年第四季度 6437891 12.01787
2020 年第三季度 6409070 15.44732

尝试添加 geom_text()。由于未包含任何数据,因此没有共享输出。这里的代码:

library(ggplot2)
library(dplyr)
#Code
Unemployment_Outflows %>%
  ggplot( aes(x=unemployment_rate, y=labor, label=year)) +
  # Custom the Y scales:
  scale_y_continuous() +
  geom_line( color="grey") +
  geom_point(shape=21, color="black", fill="#69b3a2", size=3)
geom_segment(aes(
  xend=c(tail(unemployment_rate, n=-1), NA), 
  yend=c(tail(labor, n=-1), NA)
)
)+geom_text(vjust=0.5,fontface='bold')

使用您共享的数据,试试这个:

library(tidyverse)
#Code
df %>% 
  mutate(year=factor(year,levels = unique(year),ordered = T)) %>%
  pivot_longer(-1) %>%
  ggplot(aes(x=year,y=value,color=name,group=name))+
  geom_point()+geom_line()+geom_area(aes(fill=name),alpha=0.5)+
  facet_wrap(.~name,scales='free',nrow = 1)+
  scale_y_continuous(labels = scales::comma)+
  theme_bw()+
  theme(legend.position = 'top')+
  labs(color='Var',fill='Var')

输出:

使用了一些数据:

#Data
df <- structure(list(year = c("Q4 2015", "Q4 2016", "Q4 2017", "Q4 2018", 
"Q4 2019", "Q3 2020"), labor = c(8416681, 8492965, 7907511, 6895514, 
6437891, 6409070), unemployment_rate = c(0, 12.34717, 12.83452, 
12.74767, 12.01787, 15.44732)), class = "data.frame", row.names = c(NA, 
-6L))