我有一個數據框,如下所示。我需要根據地區,日期作爲x軸和AveElapsedTime作爲y軸進行圖形化。使用ggplot從單個列中的多條線
>avg_data
date region AveElapsedTime
1 2012-05-19 betasol 1372
2 2012-05-22 atpTax 1652
3 2012-06-02 betasol 1630
4 2012-06-02 atpTax 1552
5 2012-06-02 Tax 1552
6 2012-06-07 betasol 1408
7 2012-06-12 betasol 1471
8 2012-06-15 betasol 1384
9 2012-06-21 betasol 1390
10 2012-06-22 atpTax 1252
11 2012-06-23 betasol 1442
如果我根據區域重新設置上面的那個,它將如下所示。如果特定日期沒有值(NA),則不應該繪圖。
date atpTax betasol Tax
1 2012-05-19 NA 1372 NA
2 2012-05-22 1652 NA NA
3 2012-06-02 1552 1630 1552
4 2012-06-07 NA 1408 NA
5 2012-06-12 NA 1471 NA
6 2012-06-15 NA 1384 NA
7 2012-06-21 NA 1390 NA
8 2012-06-22 1252 NA NA
9 2012-06-23 NA 1442 NA
我試過使用下面的ggplot命令,我得到geom_path錯誤。
ggplot(avg_data, aes(date, AveElapsedTime)) + geom_line(aes(col=region)) + opts(axis.text.x = theme_text(angle=90, hjust=1))
geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
> str(avg_data)
'data.frame': 11 obs. of 3 variables:
$ date : Factor w/ 9 levels "2012-05-19","2012-05-22",..: 1 2 3 3 3 4 5 6 7 8 ...
$ region : Factor w/ 3 levels "atpTax","betasol",..: 2 1 2 1 3 2 2 2 2 1 ...
$ AveElapsedTime: int 1372 1652 1630 1552 1552 1408 1471 1384 1390 1252 ...
請告知這個..
我強烈懷疑你的日期得到變成一個因素,那'ggplot2'現在抱怨,因爲在x軸上每個點被視爲一個單獨的羣體。什麼是列的類(即'str(avg_data)')的結果?你可以使用'avg_data < - transform(avg_data,date = as.Date(date))'?或者,蠻力解決方案,將'group = region'添加到您的'geom_line'映射中。 – 2012-07-23 13:58:50
它工作正常,如果我轉換爲日期。但是有沒有選擇顯示日期列中的所有日期? – Tamilan 2012-07-23 14:06:00
您可以使用'+ scale_x_date(breaks = ...)'來指定它(請參閱'?scale_x_date'),或者您可以按照我的建議(上圖)和@Andrie(在他的答案中)使用'group = region' )。 – 2012-07-23 14:08:49