Arrays 使用循环从二维阵列打印

Arrays 使用循环从二维阵列打印,arrays,r,plot,Arrays,R,Plot,这似乎是一个微不足道的问题,尽管我已经用它打击自己太久了 这甚至不只是绘制(0,0)——我似乎找不到太多关于从数组绘制的信息——而是只绘制矩阵图(并且只绘制列) 数据在这些数组中是正确的,我只需要绘制图!看起来没那么复杂。我甚至不需要为不同的集合使用不同的颜色…只是一个大的散点图 有什么建议吗 pdf(mypath) # Plot first point plot(0,0, col = "blue", type = "n", xlab="PES", ylab=""%eff") #Loop to

这似乎是一个微不足道的问题,尽管我已经用它打击自己太久了

这甚至不只是绘制(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恰好在另一个选项卡中打开,因为它是打开的,所以永远不要放开绘图(为什么?我不知道)。它一关闭,阴谋就出现了。现在我可以一次又一次地得到我的情节

感谢每一个试图帮助解决问题的人


我已经喜欢这个地方了

您的初始绘图将设置坐标,但由于您只给它一个点,它不知道在0,0点周围还有多少空间(因此它不会留下太多)。我希望您的其他点不在该范围内,这就是为什么它们不会显示在绘图上(您可以使用
par(“usr”)
查看范围是什么)

创建初始绘图时,应包括
xlim
ylim
参数,以便绘图包括将添加新点的区域,例如:

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")
   }
}
也没有循环工作

在担心发送到pdf文件之前,只需通过控制台检查它是否有效。如果尚未修复,我们仍需要更多详细信息。

当您设置
type=“n”
时,plot函数根本不会打印任何内容。它用于为绘图的其余部分(如轴标签、限制等)设置基础。这就是为什么(0,0)处的第一个点不出现的原因

其余的点可能超出范围。使用
xlim
ylim
正确设置范围。我假设
X
Y
具有相同的大小和尺寸。试试这个:

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

没有这样的运气加上限制——它甚至还没有画出最初的第一个情节。它给了我一个无效的文件。Matplot在早期的尝试中似乎不起作用。虽然我很困惑,为什么我所拥有的不只是工作。“这很简单,也很直截了当。”蓝熊猫,如果没有一个可复制的例子,我们很难诊断到底发生了什么。您能否向我们提供
mypath
X
Y
(使用
dput
)或生成正确形状随机数据的代码?我理解。mypath只是它保存到的路径(例如打印到output.pdf)。你想做什么就做什么。至于X和Y——它们都是10x39阵列;但根据数据大小可能有所不同。不管怎样,它们都将是相同的大小。我看到了您的示例——它与我的代码没有太大的不同。唯一真正的区别是,您对数组使用的是矩阵形式,我实际上有一个2D数组来存储数据,而不是矩阵。
pdf(mypath)
plot(X, Y, xlab="PES", ylab="%eff")
dev.off()