R语言 合并图
在R编程语言中,你可以使用’par’函数来组合图。组合图将帮助你轻松做出决定。par()函数用于设置多个图的参数,而layout()函数决定了图的排列方式。要组合不同的图,首先应该创建单独的图,你可以使用plot()和legend()函数将每个图添加到一个绘图窗口中。
为什么要组合图
在进行数据分析时,可能会出现这样的情况:我们需要比较两张图,并根据它们做出决定。数据分析人员将图块结合起来,在同一时间查看不同的图块。
par()函数中的参数
参数 | 说明 |
---|---|
mfrow() | 用来指定图的行数 |
mfcol() | 用来指定图表的列数 |
layout() | 它以一个矩阵为参数,矩阵的每个元素代表布局中的一个绘图区域。 |
使用mfrow来组合绘图
我们将使用 palmerpenguins 数据集一段时间。在这个例子中,我们使用par()函数和mfrow参数创建了两个单一的图,并将它们按行合并。
#install palmerpenguins package
install.packages("palmerpenguins")
library(palmerpenguins)
# combined plot with 2 rows and 1 column
par(mfrows = c(2,1))
# first single plot
plot(penguinsbody_mass_g,
penguinsflipper_length_mm,
main = "ScatterPlot",
xlab = "body_mass",
ylab = "flipper_length")
# second single plot
plot(penguinsbill_depth_mm,
penguinsbill_length_mm,
main = "ScatterPlot",
xlab = "bill_depth",
ylab = "bill_length")
输出
使用mfrows绘制的组合图
使用mfcol来组合图
在这个例子中,我们创建了两个单一的图,并使用par()方法和mfcol参数将它们逐列合并。
#create data
math_marks <- c(90, 95, 85, 76, 65)
science_marks <- c(45, 98, 54, 87, 65)
student_names <- c("A", "B", "C", "D", "E")
# combine plots with 1 row and 2 columns
par(mfcol = c(1,2))
# first pie chart
pie(math_marks, student_names,
main = "PieChart", radius = 0.75)
# second pie chart
pie(science_marks, student_names,
main = "Piechart", radius = 0.75)
输出
使用mfcol的组合饼图
使用layout()来组合图
我们使用layout()参数来根据我们的要求组合图,我们使用layout()来定制组合图。
Note: layout() function can be used only within an open device, otherwise you will get an error.
为了避免在使用layout()函数时出现错误,请使用windows()函数,它可以创建一个新的窗口来组合绘图。layout()将一个矩阵以及nrow和ncol等作为参数。
game <- data.frame(scores <- c(34, 54, 21, 67, 98),
players <- c("A", "B", "C", "D", "E"),
avg_score <- c(56, 43, 65, 23, 16))
# display plot on screen
windows()
# create layout
layout(matrix(c(1, 2, 3, 4), nrow = 2,
ncol = 2, byrow = TRUE))
# first plot
plot(gamescores, gameavg_score,
main = "ScatterPlot",
xlab = "Score_in_game",
ylab = "avg_score")
# second plot
boxplot(gameavg_score, main = "Boxplot")
# third plot
hist(gamescores, main = "Histogram",
xlab = "scores")
# fourth plot
pie(gameavg_score, gameplayers,
main = "Piechart", radius = 0.75)
输出
使用layout()绘制的组合图
要显示图的布局,你可以使用 layout.show() 函数。layout()函数的更多例子
par(mfrow = c(2, 2), mar=c(5, 5, 5, 5))
layout(matrix(c(2, 0, 1, 3), 2, 2, byrow = TRUE),
widths=c(3, 3), heights=c(1, 3))
# Create sample data
set.seed(123)
x <- rnorm(100)
y <- rnorm(100)
# Create barplot
barplot(x, main = "Bar Plot", col = "blue")
# Create scatterplot
plot(x, y, main = "Scatter Plot",
col = "red", pch = 16)
# Create densityplot
d <- density(x)
plot(d, main = "Density Plot",
col = "green", type = "l")
输出
使用layout()绘制的组合图
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE))
x <- rnorm(100)
y <- rnorm(100)
plot(density(x), col = "green")
plot(x, y, 'p', col = "red")
barplot(x, col = "yellow")
输出
使用layout()绘制的组合图
我们可以只创建一个简单的布局,里面没有任何图形,用于演示。
example <- layout(matrix(c(2, 0, 1, 3),
2, 2, byrow = TRUE))
# display layout
layout.show(example)
输出