📜  如何在 R 中绘制数据框的所有列?

📅  最后修改于: 2022-05-13 01:55:47.705000             🧑  作者: Mango

如何在 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 轴中,我们可以看到数据框列的名称。

例子:

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)函数来导入它。此函数将数据帧转换为这样一种格式(“动物园”系列),以便可以轻松地以时间序列图的形式绘制。

由于在我们的情况下yNULL ,因此生成了x的时间序列图。但是,如果 x 和 y 都是单变量“动物园”系列,那么就会生成 y 与 x 的散点图。

例子:



电阻

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 语言绘图的通用函数。它可用于创建不同类型的基本绘图。



在下面的代码中,第一个数据框列是 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

在同一面板中绘制多个变量

在这种方法中,我们为同一面板中数据框的每一列绘制了一个折线图。这在比较存储相同类型数据但在某些性质上不同的列时很有用。在对数据进行整形后,让我们看看各个列的线图将如何出现。

句法:



例子:

电阻

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()函数生成由行和列定义的布局面板。

句法:

例子:

电阻

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 ~ .)

输出: