使用R中不同长度的向量绘制图形

时间:2013-08-05 17:10:09

标签: r

我有一个数组和一个向量,如下所示 -

v<-c(2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0)
result<-matrix(1,9,1000)

现在对于v中的每个值,我想在结果矩阵中绘制整行。 对于前者对于值vi,想要绘制点(2.4,结果[1,1]),(2.4,结果[1,2]),(2.4,结果[1,3])到(2.4,结果[1, 1000]),

当我尝试使用

执行此操作时
 points(v[1],result[1,],pch=".")

我收到错误 - x和y的长度不相等。

我有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:4)

plot(cbind(v[1], result[1,]))会根据需要回收v[1]

答案 1 :(得分:1)

根据您的描述,您可以将v数组视为数据的标签。让我们记住数据,并使用ggplot2:

首先将数组v转换为与result大小相同的内容:

require('ggplot2')
require('reshape')

# OP's original data
v<-c(2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0)    
v.mat <- matrix(v,9,1000)

# OP's original data
result<-matrix(1,9,1000)

接下来,我们使用melt将此数据转换为长数据框

v.mat.melt <- melt(v.mat)
result.melt <- melt(result)

然后将我们需要的位组合成数据帧:

# combine data
data <- data.frame('v' = v.mat.melt[,3],
                   'obs' = result.melt[,2],
                   'result' = result.melt[,3])

请注意,我为“观察”添加了'obs',这是观察的索引。我不使用它,但它可以很方便。

最后,全部绘制

d <- ggplot(data = data,
            aes(x = v,
                y = result,
                color = v)) + 
  geom_point()
print(d)

et voila: results