R语言 如何使用ggplot2创建一个面状线图
在这篇文章中,我们将看到如何在R编程语言中使用ggplot2创建一个面状的线图。
在ggplot2中,geom_line()函数被用来创建一个线图。在添加单独的方法和所需的参数后,可以创建面状图。
方法1:使用facet_grid()
首先创建一个数据框架,然后,通过向geom_line添加 facet_grid() 函数来创建一个分面的线形图。
语法 : facet_grid(facets, …)
参数 :
- facets: 这个参数必须与facet_grid一起使用,指定公式中的行在LHS上,列在RHS上。 公式中使用的点参数表示在这个维度(行或列)上不应该有面。
- ...:facet_grid函数还有许多参数,如 scale、space、margins、shrink等, 但它们不是必须使用的。它们都有一些默认值,但如果我们想改变它们,我们可以使用它们。但对于切面来说,第一个参数就足够了。
返回: 图形上的切面。
使用中的语法。
facet_grid(row ~ column)
在上面的语法中,我们使用 Facets 矢量来表示列,而行则没有。要指定什么都没有,我们使用点参数,如 facet_grid(. ~ Facets) 。 这将在绘图上返回垂直面,如果要绘制水平面,我们只需在facet_grid()函数中交换点参数和facets向量。
例子 :
# Load Library
library("ggplot2")
# Create DataFrame
DF <- data.frame(X = rnorm(60),
Y = rnorm(60),
Facets = c("Facet 1", "Facet 2",
"Facet 3", "Facet 4"))
# Create Faceted LineGraph with Vertical Facets.
ggplot(DF, aes(X, Y)) +
geom_line(color = "green", size = 1) +
facet_grid(. ~ Facets)
输出:
使用facet_grid的具有垂直切面的线图
方法2:使用facet_wrap( )
我们也可以使用 facet_wrap() 函数来创建Faceted Line Graph,这通常比facet_grid()更好地利用屏幕空间,因为它将一维的面板序列包装成二维。这意味着它以2×2的方式为我们的DataFrame创建了4个面。我们还可以通过它的参数来改变面的行数和列数。
语法: facet_wrap(facets, nrow, ncol, …)
参数 :
- facets: 与我们上面讨论的facet_grid函数的facet参数相同。它指定的公式是行在左端,列在右端,即 行~列。
- nrow : 分面的行数。
- ncol : 面片的列数。
- ... : facet_wrap也有一些参数,但这些参数并不重要,因为它们有默认值。我们可以在一些特殊情况下使用它们。
返回: 将一维面的序列转换成二维。
例子。
# Load Library
library("ggplot2")
# Create a DataFrame for Plotting
DF <- data.frame(X = rnorm(60),
Y = rnorm(60),
Facets = c("Facet 1", "Facet 2",
"Facet 3", "Facet 4"))
# Create a Faceted LineGraph using
# facet_wrap Function.
ggplot(DF, aes(X, Y)) +
geom_line(color = "green", size = 1) +
facet_wrap(. ~ Facets)
输出 。
使用facet_wrap的2×2 Faceted LineGraph。
默认情况下,这个输出是以网格形式出现的。但是可以使用nrow和ncol参数来改变它,并设定适当的值。
例子 :
# Load Library
library("ggplot2")
# Create a DataFrame for Plotting
DF <- data.frame(X = rnorm(60),
Y = rnorm(60),
Facets = c("Facet 1", "Facet 2",
"Facet 3", "Facet 4"))
# Create a Faceted LineGraph using facet_wrap
# Function with changed number of rows.
ggplot(DF, aes(X, Y)) +
geom_line(color = "green", size = 1) +
facet_wrap(. ~ Facets, nrow = 4)
输出 。
使用facet_wrap的分面线图,不同的行数。