R 语言:矩阵或数字 DataFrame 作为以 X 作为列索引的散点图,以及针对 X 绘制的相应行元素

R Language: Matrix or numeric DataFrame as a scatterplot with X as the column indices, and corresponding row elements plotted against X

假设我有一个 8 x 12 矩阵:

> MyMatrix <- matrix(sample.int(5, 8*12, replace = TRUE), nrow = 8, ncol = 12)
> head(MyMatrix, n = 3)

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]  
[1,]    3    5    3    2    4    4    4    3    5     1     2     3 
[2,]    5    3    5    2    2    5    2    1    4     4     3     5 
[3,]    2    4    3    3    2    2    5    5    2     3     5     3

我想根据 MyMatrix 中存储的元素创建散点图。具体来说,我希望列索引 (1–12) 代表横坐标的值。我想为 x 的每个值绘制相应的行元素。换句话说(考虑上面的 R 输出):

等等。

我同样希望能够使用数据框而不是矩阵来实现相同的目的。每个列向量都根据唯一的 x 值绘制。在这种情况下,我没有说列索引应该代表 x 值,因为我想象可能只想从 DF 中提取列的子集的可能性,因为 DF 不完全由数字组成数据类型,或者只是其他列不相关的情况。在这种情况下,您可以沿 x 轴设置离散类别(例如,每个 "row" 拥有的苹果数量,每个 "row" 拥有的橙子数量),但不一定如此*。例如,它们可以表示时间点(T1、T2、T3 等)。为了绘图的目的,应保留从 DF 中获取的每一列的从左到右的顺序。 (也就是说,交换或移动列并不难。)

*不要陷入这样一个事实,即最终表示(数字或其他)不是模拟的,并且最终在最技术意义上仍然是离散的。

您可以使用 matplot 绘制矩阵 - 请参见第一个示例。 您还可以定义不绘制哪一列 - 请参见第二个示例,其中删除了第三列以进行绘图。

更现代的绘图方式是 ggplot 方式,您可以在其中定义基本绘图,然后逐行添加,如第三个示例所示。

这一切都应该理解为预告片。我建议查看一些文献,例如 R Graphics Cookbook 以进一步阅读。

MyMatrix <- matrix(sample.int(5, 8*12, replace = TRUE), nrow = 8, ncol = 12)
matplot(MyMatrix, type = 'l')


# if you want to leave the third column out
matplot(MyMatrix[,-3], type = 'l')

# with ggplot
library(ggplot2)

df <- data.frame(MyMatrix)
ggplot(df, aes(x=1:8))+
  geom_line(aes(y = X1))+
  geom_line(aes(y = X2), color='red') +
  geom_line(aes(y = X3), color='green')