首页 > 解决方案 > 我如何在图中添加垂直线(R ggplot2)

问题描述

在 R ggplot2 中,我如何在图中添加垂直线:我的 plot2 代码不起作用,有人可以帮忙吗?谢谢!

library(tidyverse)
#create data.frame
mdate<-seq(from=as.Date("2020-1-31"),
    to=as.Date("2020-12-31"),
    by="1 month")
mvalue<-rnorm(12)
df<-data.frame(mdate,mvalue)
#plot1: when i add vertical line by month,it's ok
df %>% ggplot(aes(x=mdate,y=mvalue))+geom_line()+
  geom_vline(aes(xintercept=df$mdate))
#plot2: when i add vertical line by quarter
#       it's can't work
vline<-seq(from=as.Date("2020-3-31"),
                  to=as.Date("2020-12-31"),
                  by="3 month")

df %>% ggplot(aes(x=mdate,y=mvalue))+geom_line()+
  geom_vline(aes(xintercept=vline))

标签: rggplot2

解决方案


你用xintercept = vline里面aes()aes()用于将列从您的数据映射到图形美学,因此ggplot在您的数据中查找名为 的列vline,该列不存在。

vline不在你的数据框中,所以不要把它放在里面aes()geom_vline(xintercept = vline)应该可以正常工作。

df %>% 
  ggplot(aes(x = mdate, y = mvalue)) + 
  geom_line() +
  geom_vline(xintercept = vline)

在此处输入图像描述


推荐阅读