使用R绘制矩阵data.frame

时间:2012-02-23 12:18:08

标签: r matrix

这个问题比类似的here更先进。预计的字符数量大约为20个。

当我在data.frame中绘制内容时,我会这样做:

# t1 is a df
> plot((q1*s1+q2*s2)/(s1+s2),data=t1)

但是我可以将此表单重用于矩阵吗?

[最后工作MVO,谢谢!]

> M<-matrix(data=rnorm(30),ncol=2,dimnames=list(NULL,c('q1','q2')))
> plot(M)
> x=1:dim(M)[1]
> plot(x~q1/q2,data=data.frame(M),type='l')

enter image description here

2 个答案:

答案 0 :(得分:1)

这种绘图(您输入涉及数据框列的公式)只适用于数据框。

如果colnames(mymatrix)q1s1等,那么您可以通过以下方式实现效果:

plot( myformula, data=data.frame(mymatrix))

即,将矩阵强制转换为数据帧,然后使用公式。

更新

证明这一点的一个例子:

# construct a matrix
> mymatrix <- array(runif(10*2),dim=c(10,2))
# give it column names X and Y
> colnames(mymatrix)<-c('X','Y')
> mymatrix
               X          Y
 [1,] 0.07346608 0.81321578
 [2,] 0.09525474 0.17852467
 [3,] 0.81246522 0.45747972
 [4,] 0.01286714 0.82517127
 [5,] 0.77554012 0.87725725
 [6,] 0.71908435 0.71628493
 [7,] 0.13212848 0.67827601
 [8,] 0.65993809 0.01650703
 [9,] 0.11385161 0.99433644
[10,] 0.22750439 0.45611635
# plot Y vs X -- note you need to convert the matrix to a data frame first.
> plot(Y~X,data.frame(mymatrix))

答案 1 :(得分:1)

您可以将一起使用

with(data.frame(mymatrix), plot((q1*s1+q2*q2)/(s1+s2)))

希望这个帮助