2013-04-21 28 views
1

使用ggplot我想繪製兩行值。 所以var0具有值49,5,20的「星期一」,「星期二」,「星期三」 和VAR1有值49,1,20的「星期一」,「星期二」,「星期三」無法使用ggplot繪製多個日期/值

這裏驗證碼:

test_data <- data.frame(
var0 = c(49, 5, 20), 
var1 = c(49, 1, 10), 
days = c("Monday" , "Tuesday" , "Wednesday")) 

ggplot(test_data, days) 
geom_line(y = var0, colour = "var0") 
geom_line(y = var1, colour = "var1") 

這裏的錯誤:

> ggplot(test_data, days) 
Error in inherits(mapping, "uneval") : object 'days' not found 
> geom_line(y = var0, colour = "var0") 
Error in do.call("layer", list(mapping = mapping, data = data, stat = stat, : 
    object 'var0' not found 
> geom_line(y = var1, colour = "var1") 
Error in do.call("layer", list(mapping = mapping, data = data, stat = stat, : 
    object 'var1' not found 

我是否正確設置數據?

回答

4

有在你的代碼的幾個誤區 - x和y的值應該把aes()調用內部,然後有遺漏ggplot()geom_line()電話之間+跡象。

如果您需要繪製兩組y值我建議,首先,融化您的數據,然後繪製融化的數據框。對於融化的數據,您只需要撥打一個geom_line(),您可以根據將在圖例中顯示的variable設置每行的顏色。

library(reshape2) 
test_data2<-melt(test_data,id.vars="days") 
test_data2 
     days variable value 
1 Monday  var0 49 
2 Tuesday  var0  5 
3 Wednesday  var0 20 
4 Monday  var1 49 
5 Tuesday  var1  1 
6 Wednesday  var1 10 
ggplot(test_data2,aes(days,value,color=variable,group=variable))+geom_line() 

enter image description here

+0

感謝,這就是似乎工作,你知道如何控制x軸值的排序?默認值是按字母順序排列,其中機密性是星期一,星期二,星期三的自然排序。 – 2013-04-21 12:17:03

+0

爲了獲得正確的順序,您應該使用函數因子()來設置levels =以滿足您的需要。 – 2013-04-21 12:18:43