r - 根据数据集中的位置对 ggplot 中的特定日期进行子集化
问题描述
我使用ggplot2
. 我想知道是否有一种解决方案可以根据它们在我的数据集中的位置自动对我的xmin
和xmax
值进行子geom_rect
集化,而不是手动填写日期。我希望始终将xmin
数据集中的第 6 个最后日期观察xmax
作为最后一个日期观察。同样,在scale_x_date
序列中,我想将其设置为自动提取数据集中的第一个和最后一个日期。
ggplot(psce_data, aes(Date,`PSCE Growth`)) +
geom_rect(aes(xmin = tail(date,1),
xmax = as.Date('2020-12-01'),
ymin = 0, ymax = 10),
fill = "red", alpha = 0.2) +
geom_line(size = 1.2, col = '#75002B') +
scale_x_date(breaks = seq(as.Date('2018-01-01'),as.Date('2020-12-01'),by = '6 months'), date_labels = '%b-%Y') +
labs(y = 'Year-on-Year Growth (%)') +
scale_y_continuous(breaks = seq(0,10,by = 2)) +
theme_bw()
这是我的数据集的可复制品
structure(list(Date = structure(c(17532, 17563, 17591, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17987, 18017, 18048, 18078, 18109, 18140, 18170,
18201, 18231, 18262, 18293, 18322, 18353, 18383, 18414, 18444,
18475, 18506, 18536, 18567, 18597), class = "Date"), `PSCE Growth` = c(6.03806138152698,
6.03809149124142, 6.01532602228477, 6.14343685180097, 5.72725741494446,
5.71673506872114, 5.54860173966314, 6.78058899222803, 6.71018505753344,
7.18229309747457, 7.35166052339761, 6.88491297221491, 6.39557440155487,
6.04095268041736, 5.98793033021946, 7.0149065226691, 8.3391362577722,
7.77825490464967, 7.52521947220078, 6.42564285250243, 6.52665779068081,
6.42119590515603, 6.0627396381368, 7.17023911171296, 7.25116619687204,
6.14998629821019, 6.10667340304004, 3.70834197649858, 2.18774730704022,
2.82551654988927, 3.02881235983089, 2.70973404541919, 2.91094424831471,
2.51635377656063, 2.85799109044056, 1.94656704508046)), row.names = c(NA,
-36L), class = c("tbl_df", "tbl", "data.frame"))
解决方案
您可以使用head(tail(Date, 6), 1)
:
ggplot(psce_data, aes(Date, `PSCE Growth`)) +
geom_rect(aes(xmin = head(tail(Date, 6), 1),
xmax = tail(Date, 1),
ymin = 0, ymax = 10),
fill = "red", alpha = 0.2) +
geom_line(size = 1.2, col = '#75002B') +
scale_x_date(breaks = seq(head(psce_data$Date, 1),
tail(psce_data$Date, 1),
by = '6 months'), date_labels = '%b-%Y') +
labs(y = 'Year-on-Year Growth (%)') +
scale_y_continuous(breaks = seq(0, 10, by = 2)) +
theme_bw()
推荐阅读
- c++ - 可以根据模板参数有条件地添加 C++ 元组元素类型吗?
- flutter - 颤动动画列表在删除项目后不为其余项目设置动画
- plotly - Plotly 下拉菜单无法更新标记符号
- java - 当一个@Around 建议没有进行时的建议优先级问题
- terraform - 我可以为 azurerm_marketplace_agreement 编写一个模块,如果它们尚不存在,它将有条件地接受该术语?
- c# - 为什么 Directory.GetParent 为非路径字符串返回本地临时文件夹?
- reactjs - 读取 URL 参数 NextJS
- python - 根据未来 X 天相同数据帧的未来值填充 Pandas 数据帧中的新列
- javascript - 使用解析的 SQL 值从 API 数组中查找缺失值
- python - 如何显示嵌套列表中的所有一个值?