2016-05-04 2 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, cover): вместо этого объект« duration »не найден», что связано с тем, что в 'stats' нет столбца' duration'. Вы уверены, что используете именно тот код, который вы указали? И какую версию 'ggplot2' вы используете? – Stibu

ответ

1

Проблема заключается в том, что вы создаете график из 2 data.frames, но ваш начальный вызов ggplot включает в себя параметры aes, ссылающиеся только на data.frame local.

Так как ваш 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

Просто удалите size = duration из ggplot (local, aes (x = p.start, y = ratio, 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

Смежные вопросы