如何在 R 中绘制数据框的所有列?
在本文中,我们将学习如何用 R 编程语言绘制 DataFrame 的所有列。
使用中的数据集:
x y1 y2 y3
1 1 0.08475635 0.4543649 0
2 2 0.22646034 0.6492529 1
3 3 0.43255650 0.1537271 0
4 4 0.55806524 0.6492887 3
5 5 0.05975527 0.3832137 1
6 6 0.08475635 0.4543649 0
7 7 0.22646034 0.6492529 1
8 8 0.43255650 0.1537271 0
9 9 0.55806524 0.6492887 3
10 10 0.05975527 0.3832137 1
方法一:使用 plot.ts()函数
我们只需要在plot.ts()函数传递我们的数据框,它就会在时间序列图中绘制所有数据框列。在 Y 轴中,我们可以看到数据框列的名称。
Syntax: plot.ts(df)
Parameters:
df: DataFrame object
例子:
R
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
plot.ts(df)
R
require(zoo)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
df <- zoo(df)
plot(df)
R
require(zoo)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
plot(df$x, df$y1, type = "o", col = 1, ylim = c(0, 3))
lines(df$x, df$y2, type = "o", col = 2)
lines(df$x, df$y3, type = "o", col = 3)
R
library(ggplot2)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
# Reshape data frame
df_reshaped <- data.frame(x = df$x,
y = c(df$y1, df$y2, df$y3),
group = c(rep("y1", nrow(df)),
rep("y2", nrow(df)),
rep("y3", nrow(df))))
head(df_reshaped,10)
R
library(ggplot2)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
# Reshape data frame
df_reshaped <- data.frame(x = df$x,
y = c(df$y1, df$y2, df$y3),
group = c(rep("y1", nrow(df)),
rep("y2", nrow(df)),
rep("y3", nrow(df))))
ggplot(df_reshaped, aes(x, y, col = group)) + geom_line()
R
library(ggplot2)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
# Reshape data frame
df_reshaped <- data.frame(x = df$x,
y = c(df$y1, df$y2, df$y3),
group = c(rep("y1", nrow(df)),
rep("y2", nrow(df)),
rep("y3", nrow(df))))
ggplot(df_reshaped, aes(x, y, col = group)) + geom_line()+ facet_grid(group ~ .)
输出:
方法二:使用zoo()函数
zoo ()函数存在于zoo包中,因此必须通过在代码的第一行放置require(zoo)函数来导入它。此函数将数据帧转换为这样一种格式(“动物园”系列),以便可以轻松地以时间序列图的形式绘制。
由于在我们的情况下y为NULL ,因此生成了x的时间序列图。但是,如果 x 和 y 都是单变量“动物园”系列,那么就会生成 y 与 x 的散点图。
Syntax: plot(zoo(df))
Parameters:
df: DataFrame object
例子:
电阻
require(zoo)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
df <- zoo(df)
plot(df)
输出:
方法三:使用plot()函数
在这种方法中,我们将使用基本的plot()函数绘制一个折线图,显示数据框的多列。 plot()函数被定义为 R 语言绘图的通用函数。它可用于创建不同类型的基本绘图。
Syntax: plot(X, Y, type = “l”, col = 1, ylim = c(0, 3))
Parameters:
X: X-axis. ->
Y: Y-axis ->
type: specifies the type of plot
col: specifies colour
ylim: specifies limit for y-axis
在下面的代码中,第一个数据框列是 X 轴,其余列是 y 轴,它们是根据 折线图形式的第一列。这 对于不同的线, col 的值应该不同,这样不同的线就有不同的颜色,最后我们指定了 ylim,它限制了y 轴的值。
我们还可以通过为类型参数指定不同的值来绘制不同类型的图。例如, type="h"会绘制直方图。
例子:
电阻
require(zoo)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
plot(df$x, df$y1, type = "o", col = 1, ylim = c(0, 3))
lines(df$x, df$y2, type = "o", col = 2)
lines(df$x, df$y3, type = "o", col = 3)
输出:
方法 4:使用 ggplo2() 包
为此,必须将数据重塑为可以绘制的形式。
例子:
电阻
library(ggplot2)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
# Reshape data frame
df_reshaped <- data.frame(x = df$x,
y = c(df$y1, df$y2, df$y3),
group = c(rep("y1", nrow(df)),
rep("y2", nrow(df)),
rep("y3", nrow(df))))
head(df_reshaped,10)
输出:
x y group
1 1 0.08475635 y1
2 2 0.22646034 y1
3 3 0.43255650 y1
4 4 0.55806524 y1
5 5 0.05975527 y1
6 6 0.08475635 y1
7 7 0.22646034 y1
8 8 0.43255650 y1
9 9 0.55806524 y1
10 10 0.05975527 y1
在同一面板中绘制多个变量
在这种方法中,我们为同一面板中数据框的每一列绘制了一个折线图。这在比较存储相同类型数据但在某些性质上不同的列时很有用。在对数据进行整形后,让我们看看各个列的线图将如何出现。
句法:
ggplot(df_reshaped, aes(x, y, col = group)) + geom_line()
例子:
电阻
library(ggplot2)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
# Reshape data frame
df_reshaped <- data.frame(x = df$x,
y = c(df$y1, df$y2, df$y3),
group = c(rep("y1", nrow(df)),
rep("y2", nrow(df)),
rep("y3", nrow(df))))
ggplot(df_reshaped, aes(x, y, col = group)) + geom_line()
输出:
在不同的面板中绘制多个变量
在这种方法中,我们为同一图的不同面板中数据框的每一列绘制了一个折线图。我们可以通过添加 facet_grid()函数来完成这个任务。 facet_grid()函数生成由行和列定义的布局面板。
句法:
ggplot(df_reshaped, aes(x, y, col = group)) + geom_line()+ facet_grid(group ~ .)
例子:
电阻
library(ggplot2)
set.seed(200)
df <- data.frame(x = 1:10,
y1 = rnorm(5),
y2 = runif(5),
y3 = rpois(5, 1))
# Reshape data frame
df_reshaped <- data.frame(x = df$x,
y = c(df$y1, df$y2, df$y3),
group = c(rep("y1", nrow(df)),
rep("y2", nrow(df)),
rep("y3", nrow(df))))
ggplot(df_reshaped, aes(x, y, col = group)) + geom_line()+ facet_grid(group ~ .)
输出: