2016-05-04 57 views
0

我有一個小數據集,本地,(5觀察)有兩種類型:a和b。每個觀察都有一個日期字段(p.start),一個比率和一個持續時間。ggplot2 facet_wrap geom_text不接受日期值

local 

    principal p.start duration allocated.days ratio 
1   P 2015-03-18  1  162.0000 162.0000 
2   V 2015-08-28  4  24.0000 6.0000 
3   V 2015-09-03  1  89.0000 89.0000 
4   V 2015-03-30  1  32.0000 32.0000 
5   P 2015-01-29  1  150.1667 150.1667 

str(local) 

'data.frame': 5 obs. of 5 variables: 
$ principal  : chr "P" "V" "V" "V" ... 
$ p.start  : Date, format: "2015-03-18" "2015-08-28" "2015-09-03" "2015-03-30" ... 
$ duration  : Factor w/ 10 levels "1","2","3","4",..: 1 4 1 1 1 
$ allocated.days: num 162 24 89 32 150 
$ ratio   : num 162 6 89 32 150 

我有另一個數據框,統計,與文本添加到一個多面情節。

stats 

    principal   xx yy   zz 
1   P 2015-02-28 145.8 Average = 156 
2   V 2015-02-28 145.8 Average = 24 

str(stats) 

'data.frame': 2 obs. of 4 variables: 
$ principal: chr "P" "V" 
$ xx  : Date, format: "2015-02-28" "2015-02-28" 
$ yy  : num 146 146 
$ zz  : chr "Average = 156" "Average = 24" 

下面的代碼失敗:

p  = ggplot (local, aes (x = p.start, y = ratio, size = duration)) 
p  = p + geom_point (colour = "blue"); p 
p  = p + facet_wrap (~ principal, nrow = 2); p 
p  = p + geom_text(aes(x=xx, y=yy, label=zz), data= stats) 
p 
Error: Continuous value supplied to discrete scale 

任何想法?我錯過了一些明顯的東西。

+1

我無法重現你的錯誤消息。我在eval(expr,envir,enclos):object'duration'not found「中得到了」Error「,這是因爲'stats'中沒有列'duration'。你確定你正在運行你顯示的代碼嗎?你使用的是哪個版本的'ggplot2'? – Stibu

回答

1

問題是您正在繪製2個data.frames,但您的初始ggplot調用包括aes參數,僅指local data.frame。

所以,雖然你geom_text指定data=stats,它仍然在尋找size=duration

下面一行對我的作品:

ggplot(local) + 
    geom_point(aes(x=p.start, y=ratio, size=duration), colour="blue") + 
    facet_wrap(~ principal, nrow=2) + 
    geom_text(data=stats, aes(x=xx, y=yy, label=zz)) 
1

剛剛從ggplot (local, aes (x = p.start, y = ratio, size = duration))刪除size = duration,並將其添加到geom_point (colour = "blue")。然後,它應該工作。

ggplot(local, aes(x=p.start, y=ratio))+ 
geom_point(colour="blue", aes(size=duration))+ 
facet_wrap(~principal, nrow=2)+ 
geom_text(aes(x=xx, y=yy, label=zz), data=stats) 

enter image description here

+1

兩個答案都很完美。謝謝! – Gerry