如何在ggplot中为竖线与X轴交点添加自定义刻度及标签?
实现自定义X轴刻度的方法
当然可以实现,你只需要通过scale_x_yearqtr()(针对yearqtr类型的坐标轴)手动指定刻度位置(breaks)和对应的标签(labels)即可,具体操作如下:
- 先定义要添加的自定义刻度位置:
custom_x <- as.yearqtr(as.Date('2003-04-01')) - 在ggplot图层中,合并默认刻度与自定义刻度,同时对应设置标签:
完整代码示例:
library(ggplot2) library(quantmod) dat = data.frame(val = 1:20, qtr = as.yearqtr(seq(as.Date('2000-01-01'), length.out = 20, by = '3 months'))) custom_x <- as.yearqtr(as.Date('2003-04-01')) # 获取默认X轴刻度,也可手动指定所需刻度 default_breaks <- scales::extended_breaks()(range(dat$qtr)) # 合并默认刻度与自定义刻度,去重后排序 all_breaks <- sort(unique(c(default_breaks, custom_x))) # 生成对应标签,将自定义刻度位置替换为指定文本 all_labels <- ifelse(all_breaks == custom_x, 'Sep : 2003-04-01', format(all_breaks, "%Y Q%q")) ggplot(data = dat) + geom_line(aes(x = qtr, y = val)) + geom_vline(xintercept = custom_x) + scale_x_yearqtr(breaks = all_breaks, labels = all_labels)
如果不需要保留默认刻度,也可以完全手动指定刻度集合:
ggplot(data = dat) + geom_line(aes(x = qtr, y = val)) + geom_vline(xintercept = custom_x) + scale_x_yearqtr( breaks = c(as.yearqtr("2000 Q1"), as.yearqtr("2001 Q1"), custom_x, as.yearqtr("2004 Q1")), labels = c("2000 Q1", "2001 Q1", "Sep : 2003-04-01", "2004 Q1") )
通过以上方式,就能在竖线对应的X轴位置添加自定义的刻度与标签。
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

