2015-05-19 70 views
0

首先,我是R中的一個新手。不幸的是,我找不到與我的問題相關的現有標記。我有以下結構的幾個data.frames:如何繪製包含多個觀察對象的時間序列表

線:City1,位於City2,請分享幫助,(...)

列:遷移,2004年流動,遷移,2005年流動,遷移,2006年流動(。 ..)

City Migration-Flow 2004 Migration-Flow 2005 Migration-Flow 2006 
---- ------------------- ------------------- ------------------- 
City1 5920     1339     -3394 
City2 3001     4129     4430 
... 

我的行(不是我的列)表示每個城市的時間序列。例如,data.frame [,2]表示2004年至2010年City1的時間序列。

我想要做的是,繪製每條線(每個城市從2004年到2010年的遷移流)單個圖表來比較它們。有沒有辦法做到這一點?

+0

我編輯了你的問題來表達你的數據看起來像。請確認我的編輯已正確表示。 – TARehman

回答

0

蠻力非巧妙的方法(但爲什麼不呢,它的簡稱):

# Generate artificial data 
flow = matrix(runif(100,1000,2000),nrow=10) 
d = data.frame(City=paste0("City",1:10),flow) 

# Brute force 
plot(unlist(d[1,-1]), type = "l") 
for (i in 2:nrow(d)) lines(unlist(d[i,-1]),col=i) 

注意,在你的榜樣data.frame [2]是城市1.

0

使用plot命令,可以從數據的第一行生成一個圖。然後,使用lines,您可以爲每個新行添加一條新圖。一個簡單的for循環會使這個過程相對簡單。一個簡單的例子是如下:

set.seed(519310) 
testdata <- data.frame(City=c("Trenton","New Dehli","Kabul","New York","Santa Fe","Berlin","Oslo"), 
         Migration.2004=sample(x = -1000:1000,size = 7,replace = TRUE), 
         Migration.2005=sample(x = -1000:1000,size = 7,replace = TRUE), 
         Migration.2006=sample(x = -1000:1000,size = 7,replace = TRUE), 
         Migration.2007=sample(x = -1000:1000,size = 7,replace = TRUE), 
         Migration.2008=sample(x = -1000:1000,size = 7,replace = TRUE), 
         Migration.2009=sample(x = -1000:1000,size = 7,replace = TRUE), 
         Migration.2010=sample(x = -1000:1000,size = 7,replace = TRUE)) 

plot(x = 1:(ncol(testdata)-1), 
    y = testdata[1,2:8], 
    type = "l", 
    ylim = c(-1000,1000)) 

colors <- c("red","blue","green","yellow","purple","orange","dark blue") 

for(x in 2:nrow(testdata)) { 

    lines(x = 1:(ncol(testdata)-1),y = testdata[x,2:8],type = "l",col = colors[x]) 
} 

這將產生以下的輸出:

Plot Output

使用legend命令,你可以製作一個傳奇,並使用colorRamp會讓你有顏色動態更改在行數上。 xlabplot中的參數將允許您使x軸標籤更加複雜。雖然這段代碼很簡單並且依賴於特定數量的行,但您可以輕鬆將其推廣到更多不同的數據。