2015-06-18 54 views
0

我想要繪製的數據幀,看起來像這樣的圖表:爲什麼我的圖形的Y軸不按正確的順序?

year week cases 
2003 1  0 
2003 2  0 
2003 3 12 
2003 4 23 
2003 5 12 
2003 6 16 
2003 7 20 
2003 8 13 
2003 9  0 
2003 10  0 
2003 11 21 
2003 12 133 
2003 13  9 
2003 14 22 

攜帶從2003-2012運行52週數據。

下面是運行dput(head(df,20)給我:

structure(list(year = c(2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 
2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 
2003L, 2003L, 2003L, 2003L, 2003L), week = 1:20, cases = c(2, 
2, 26, 146, 26, 70, 115, 37, 2, 2, 124, 41, 245, 135, 146, 163, 
26, 26, 92, 92)), .Names = c("year", "week", "cases"), row.names 1925:1944, class = "data.frame") 

我希望我的Y軸是簡單的變量的「案件」的範圍,X軸通過52我1周運行想要以不同顏色繪製每年的數據點。

這裏是我的代碼GGPLOT2:

ggplot(df, aes(x=week, y=cases, col=year)) + geom_point() 

這是它生成的圖形:

graph

這究竟是爲什麼?我沒有看到爲什麼我的Y軸不應該只是'升序'的範圍。

+6

是不是你的情況字符?因爲你的軸似乎排序給我,但在字符的順序... – Cath

+0

哦,我沒有想到這一點。我如何獲得它作爲整數而不是字符讀取它們? –

+0

可能存在一個「奇怪的」值,它解釋了R沒有直接將它識別爲數字的事實,因此尋找它。 (例如,嘗試'as.numeric(df $ cases)'並搜索NA值;-)) – Cath

回答

1

綜上所述什麼在評論中說:

你y軸確實排序,但根據字符值(或者說因子水平,爲您的變量是進口的因素),而不是數字那些(所以1, 10, 11, ..., 2, 20, ...

存在着需要解決兩個問題:
第一個是,你必須理解爲什麼變量沒有被導入爲數字。你可能有一個「奇怪」的值(如1,2例如,即逗號而不是一個點作爲小數點分隔符)
第二個是你需要數值來正確繪製你的數據。爲此,您可以使用df$cases <- as.numeric(as.character(df$cases))來改變您的因素。 請注意,奇怪的值將被轉換爲NAs,您可能不希望這樣。

只是最後要注意,如果你不想你的性格變量導入爲的因素,則可以在導入步驟,使用參數stringsAsFactors=FALSE

相關問題