2014-02-27 112 views
0

這似乎是一個微不足道的問題,雖然我一直在頭上打了太久。使用循環繪製二維陣列

這甚至沒有繪製(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()有一個空的情節......但沒有這樣的運氣。


SOLUTION !!

原來我只是一個傻瓜。代碼是acurate和下面的建議確實工作。 R碰巧在另一個標籤中打開,並且自從它開放以來,從不放開情節(爲什麼?我不知道)。一旦關閉,情節就出現了。現在我可以一次又一次得到我的情節...

感謝大家誰試圖幫助一個問題,這不是一個問題!

我喜歡這個地方!

回答

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文件。如果這還沒有解決它,我們仍然需要更多的細節。

+0

沒有這樣的運氣與添加的限制 - 它甚至還沒有繪製原來的第一條曲線。它給了我一個無效的文件。 Matplot在先前的嘗試中似乎不起作用。雖然我很困惑,但爲什麼我不能簡單地工作。這非常簡單直接。 – BluePanda

+0

@BluePanda,如果沒有可重複的例子,我們很難診斷正在發生的事情。你能否給我們提供'mypath','X'和'Y'(使用'dput')或代碼來生成正確形狀的隨機數據? –

+0

我明白了。 mypath只是它保存的路徑(例如,繪製到output.pdf)。無論你喜歡什麼,你都可以做到。至於X和Y--它們都是10x39陣列;但根據數據可能會有所不同。無論他們的尺寸是否相同。 – BluePanda

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