我有一个数组和一个向量,如下所示 -
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的长度不相等。
我有什么方法可以做到吗?
答案 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: