R语言 在ggplot2绘图中为日期类的X轴绘制垂直线
在这篇文章中,我们将看到如何在R编程语言中的ggplot2绘图中绘制日期类X轴的垂直线。这里我们使用的是散点图,你可以根据你的要求绘制任何图形。
首先,通过使用 library() 函数加载ggplot2包。现在我们将创建一个DataFrame,其中有两个向量分别用于X轴和Y轴。这里使用一串从开始到结束的日期作为绘图的X轴值。为此,我们必须使用R函数,如 “seq() “和 “as.Date()”。 seq()函数生成日期的序列。
语法: seq(…, length, by)
参数 :
- 一般来说,seq函数有许多参数,但在这里我们只使用这些参数中的必要参数。
- ... : 传递的参数要进行排序。这里我们要对日期进行排序。因此,我们使用as.Date()函数作为seq的第一个参数。
- length : 序列的期望长度。这里我们想要60个月的日期。所以我们给长度参数的值是60。
- by: 序列的增量。这里我们给by参数的值是’1个月’,以使日期增量为1个月。
返回: 按照给定的参数的规则序列。
as.Date() 函数将分配给它的对象转换为代表日历日期的 “Date “类。
语法: as.Date(x, origin)
参数 :
- 如果我们没有任何要转换的对象,我们可以使用’0’作为一个值。
- origin : 一个’Date’对象
返回: 一个’Date’类的对象
现在为了创建一个R图,我们使用ggplot()函数,为了使它成为一个散点图,我们在ggplot()函数中添加了geom_point()函数。
让我们先把它正常地可视化,这样就可以看出区别了。
例子
# Load Packages
library("ggplot2")
# Create DataFrame for plotting with Date class.
data <- data.frame(X_dates = seq(as.Date(0, origin = "2000-01-01"),
length = 60, by = "1 month"),
Y_Values = sample(1:100, 60, replace = TRUE))
# Create Scatter Plot by using ggplot2
simplePlot <- ggplot(data, aes(X_dates, Y_Values))+
geom_point(fill = "green", size = 5, color = "black", shape = 21)
simplePlot
输出
使用ggplot2绘制散点图
现在,为了在Date类的X轴上画出垂直线,我们必须定义我们想画垂直线的日期范围。为此,我们创建了 “date_range “对象,并给它分配了日期范围。在这里,我们使用as.Date()函数选择日期范围,并使用which()函数从X轴数值中选择日期。
语法 : which(x)
参数:
- which()主要有三个参数x, arr,ind和useNames,但只有’x’是必须使用的。这里我们没有使用其他两个参数。
- x : 一个输入逻辑向量,或者你可以说它是一个条件,我们想通过它来提取值。
返回: 返回逻辑向量或条件中的值的位置。
以下是用于指定日期范围的语法。
语法
date_range <- which(data$X_dates %in% as.Date(c("start_date", "end_date") )
现在,为了绘制垂直线,我们在geom_point()函数中添加了geom_vline()函数,在X轴的给定值上绘制垂直线。在geom_vline()中,我们使用参数 “xintercept “来控制X轴上的线的位置。我们使用as.numeric()函数给xintercept提供了通过索引日期返回的日期范围的数字值。
语法: geom_vline(xintercept)
参数: 这里xintercept用来控制线的X位置。
返回: R图上的 垂直线 。
例子
# Load ggplot2 Package
library("ggplot2")
# Create DataFrame for plotting
data <- data.frame(X_dates = seq(as.Date(0, origin = "2000-01-01"),
length = 60, by = "1 month"),
Y_Values = sample(1:100, 60, replace = TRUE))
# Assign range of the dates to
# date_range object
date_range <- which(dataX_dates %in% as.Date(
c("2001-12-01", "2003-11-01")) )
# Create ggplot2 ScatterPlot with vertical
# line to X Axis of Class 'Date'
vlinedPlot <- ggplot(data, aes(X_dates, Y_Values)) +
geom_point(fill = "green", size = 5, color = "black", shape = 21)+
geom_vline(xintercept = as.numeric(dataX_dates[date_range]),
color = "dark green", size = 2)
vlinedPlot
输出
带有垂直线的班级日期X轴的散点图