R语言。矩阵或数字DataFrame为散点图,X为列索引,相应的行元素对X进行绘制。

问题描述 投票:0回答:1

假设我有一个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)代表scscissa的值。我想为每一个值绘制相应的行元素。x. 换句话说(考虑到上面的R输出)。

  • 对于 x =1,点在 y = 3, 5, 2, ...,
  • 对于 x =2,点在 y = 5, 3, 4, ...,
  • 对于 x =3,点在 y = 3, 4, 3, ...,

等等。

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

*毋庸置疑,最终的表示方式(数字或其他方式)不是模拟的,最终仍将是最技术意义上的离散。

r dataframe matrix plot scatter-plot
1个回答
0
投票

你可以使用 matplot 你也可以定义不画哪一列--见第二个例子,在这个例子中,第三列被去掉了,用于绘制矩阵。

更现代的绘图方式是使用 ggplot 的方式,在这里你可以定义你的基础图,然后逐行添加,如第三个例子所示。

这一切都应该理解为一个预告。我建议大家去看看一些文献,比如 R图形食谱 以供进一步阅读。

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')

© www.soinside.com 2019 - 2024. All rights reserved.