如何在R vistime绘制的时间线中添加代表2021年的竖线
vistime添加年份竖线不显示的解决方法
核心原因
你之前操作未生效的主要问题是:
- 使用
geom_vline时,xintercept参数没有转换为日期格式,和gg_vistime的x轴数据类型不匹配 - 若使用plotly版本的vistime,需将日期转为数值类型,且明确指定竖线的y轴起止范围
静态ggplot版解决代码
library(vistime) library(ggplot2) Wand <- read.csv(text="event,group,start,end,color,fontcolor Mature,Legend,2004-01-01,2009-12-31,#37782C,white Seedlings,Legend,2010-01-01,2015-12-31,#9FD983,black Absent,Legend,2016-01-01,2021-12-31,#FEFED3,black Unknown,Legend,2022-01-01,2027-12-31,#DCDCDC,black Burn,Legend,2028-01-01,2033-12-31,#000000,white Extirpated :),Legend,2034-01-01,2039-12-31,#024064,white ,Caravan Park,2004-01-01,2008-12-31,#37782C,black ,Caravan Park,2009-01-01,2010-12-31,#DCDCDC,black ,Caravan Park,2011-01-01,2011-12-31,#37782C,black ,Caravan Park,2012-01-01,2013-12-31,#DCDCDC,black ,Caravan Park,2014-01-01,2014-12-31,#9FD983,black ,Caravan Park,2015-01-01,2018-12-31,#DCDCDC,black ,Caravan Park,2019-01-01,2020-12-31,#9FD983,black Annual Surveillance,Caravan Park,2021-01-01,2026-12-31,#3CB3C0,black ,Caravan Park,2027-01-01,2027-12-31,#024064,black ,Gravel Pit,2004-01-01,2008-12-31,#37782C,black ,Gravel Pit,2009-01-01,2009-12-31,#DCDCDC,black ,Gravel Pit,2010-01-01,2010-12-31,#37782C,black ,Gravel Pit,2011-01-01,2018-12-31,#DCDCDC,black ,Gravel Pit,2019-01-01,2020-12-31,#37782C,black Annual Surveillance,Gravel Pit,2021-01-01,2035-12-31,#3CB3C0,black ,Gravel Pit,2036-01-01,2036-12-31,#024064,black") # 保存基础绘图结果 p <- gg_vistime(Wand,show_labels = TRUE,background_lines = NULL,optimize_y = TRUE, title = "Town", linewidth=20) # 叠加2021年竖线,可自定义颜色、粗细、线型 p <- p + geom_vline(xintercept = as.Date("2021-01-01"), color = "red", linewidth = 1.5, linetype = "dashed") # 输出绘图 print(p)
交互plotly版解决代码
如果你需要生成可交互的时间线图,使用如下代码添加竖线:
library(vistime) library(plotly) Wand <- read.csv(text="event,group,start,end,color,fontcolor Mature,Legend,2004-01-01,2009-12-31,#37782C,white Seedlings,Legend,2010-01-01,2015-12-31,#9FD983,black Absent,Legend,2016-01-01,2021-12-31,#FEFED3,black Unknown,Legend,2022-01-01,2027-12-31,#DCDCDC,black Burn,Legend,2028-01-01,2033-12-31,#000000,white Extirpated :),Legend,2034-01-01,2039-12-31,#024064,white ,Caravan Park,2004-01-01,2008-12-31,#37782C,black ,Caravan Park,2009-01-01,2010-12-31,#DCDCDC,black ,Caravan Park,2011-01-01,2011-12-31,#37782C,black ,Caravan Park,2012-01-01,2013-12-31,#DCDCDC,black ,Caravan Park,2014-01-01,2014-12-31,#9FD983,black ,Caravan Park,2015-01-01,2018-12-31,#DCDCDC,black ,Caravan Park,2019-01-01,2020-12-31,#9FD983,black Annual Surveillance,Caravan Park,2021-01-01,2026-12-31,#3CB3C0,black ,Caravan Park,2027-01-01,2027-12-31,#024064,black ,Gravel Pit,2004-01-01,2008-12-31,#37782C,black ,Gravel Pit,2009-01-01,2009-12-31,#DCDCDC,black ,Gravel Pit,2010-01-01,2010-12-31,#37782C,black ,Gravel Pit,2011-01-01,2018-12-31,#DCDCDC,black ,Gravel Pit,2019-01-01,2020-12-31,#37782C,black Annual Surveillance,Gravel Pit,2021-01-01,2035-12-31,#3CB3C0,black ,Gravel Pit,2036-01-01,2036-12-31,#024064,black") # 生成基础交互图 p_plotly <- vistime(Wand,show_labels = TRUE,background_lines = NULL,optimize_y = TRUE, title = "Town", linewidth=20) # 叠加2021年竖线 p_plotly <- p_plotly %>% add_segments( x = as.numeric(as.Date("2021-01-01")), xend = as.numeric(as.Date("2021-01-01")), y = 0, yend = 3, line = list(color = "red", width = 2, dash = "dash") ) # 输出交互图 p_plotly
内容的提问来源于stack exchange,提问作者user16812309
相关产品推荐
相关产品推荐

