使用循环从2D阵列绘图

时间:2014-02-27 21:05:31

标签: arrays r plot

这似乎是一个微不足道的问题,尽管我已经用它打了很长时间。

这甚至没有绘制(0,0) - 我似乎找不到关于从数组绘图的更多信息 - 而只是矩阵图(并且只有那些列)。

数据在这些数组中是正确的,我只需要制作情节!似乎并不那么复杂。我甚至不需要为不同的集合设置单独的颜色......只需要一个大的散点图。

有什么建议吗?

pdf(mypath)
# Plot first point
plot(0,0, col = "blue", type = "n", xlab="PES", ylab=""%eff")

#Loop to Plot remaining points
for(rows in 1:nrowX)
{
   for(cols in 1:ncolX)
   {
      points(X[rows,cols],Y[rows,cols], col = "blue", type = "p")
   }
}
dev.off

我也尝试使用plot.new()来制作空图......但没有这样的运气。


解!!

原来我只是个傻瓜。代码是准确的,下面的建议确实有效。

R碰巧在另一个标签中打开,因为它是开放的,所以永远不要放弃情节(为什么?我不知道)。一旦关闭,情节就出现了。现在我可以一次又一次地得到我的情节......

感谢所有尝试帮助解决问题的人!

我已经喜欢这个地方了!

2 个答案:

答案 0 :(得分:0)

你的初始情节将设置坐标,但由于你只给它一点,它不知道在0点附近有多少空间(所以它不会留下很多)。我希望你的其余分数超出该范围,这就是为什么它们没有出现在情节中(你可以使用par("usr")来查看范围)。

创建初始图时,您应该包含xlimylim个参数,以便图表包含添加新点的区域,如:

plot(0,0, type='n', xlim=range(X), ylim=range(Y))

您可能也对matplot函数感兴趣,该函数将矩阵作为x和/或y参数之一或两者并相应地进行绘图。

修改

以下适用于我:

X <- matrix( runif(390), nrow=10 )
Y <- matrix( rnorm(390), nrow=10 )


plot(0,0, col = "blue", type = "n", xlab="PES", ylab="%eff",
    xlim=range(X), ylim=range(Y))

#Loop to Plot remaining points
for(rows in 1:nrow(X))
{
   for(cols in 1:ncol(X))
   {
      points(X[rows,cols],Y[rows,cols], col = "blue", type = "p")
   }
}

我确实从"删除了额外的ylab,这是您的问题吗?

但是

plot(X,Y)

也没有循环。

在担心发送到pdf文件之前,只需检查一下控制台是否有效。如果还没有解决,我们还需要更多细节。

答案 1 :(得分:0)

设置type = "n"时,绘图功能根本不会绘制任何内容。它用于为图的其余部分设置基础(如轴标签,限制等)。这就是为什么第一个点(0,0)没有显示出来的原因。

其余的分数可能超出范围。使用xlimylim正确设置范围。我将假设XY具有相同的大小和维度。试试这个:

pdf(mypath)

# Set up the plot
plot(0, type="n", xlab="PES", ylab="%eff", xlim=range(X), ylim=range(y))

# Now plot
points(X,Y, col="blue")

dev.off

当然,您可以让plot功能为您处理限制:

pdf(mypath)
plot(X, Y, xlab="PES", ylab="%eff")
dev.off()