2016-07-29 5 views
1

Я хочу линейный график, где value строится как функция expt с одной линии на уровне var:ggplot2: Фактор оси х с geom_line не работает

Вот мои данные:

lines <- " 
expt,var,value 
1,none.p,0.183065327746799 
2,none.p,0.254234138384241 
3,none.p,0.376477571234912 
1,male.p,-1.58289835719949 
2,male.p,-1.98591548366901 
3,male.p,-2.02814824729229 
1,neutral.p,-2.01490302054226 
2,neutral.p,-1.88178562088577 
3,neutral.p,-1.68089687641625 
1,female.p,-3.27294304613848 
2,female.p,-3.07711187982237 
3,female.p,-2.89652562347054 
1,both.p,-2.40011011312792 
2,both.p,-2.24495598015741 
3,both.p,-2.78501124223834" 
con <- textConnection(lines) 
data <- read.csv(con) 
close(con) 

expt является фактором:

data$expt <- factor(data$expt) 

Все работает, как ожидалось, когда я использую geom_point

ggplot(data, aes(expt, value, colour=var)) + geom_point() 

, но когда я использую geom_line

ggplot(data, aes(expt, value, colour=var)) + geom_line() 

Я получаю следующее сообщение об ошибке

geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic? 

и пустой участок. Когда expt является числовым, он работает, но я предпочитаю использовать коэффициент, потому что это дает мне правильные метки на оси x. В чем проблема? Я считаю, что это очень противоречиво, что это работает с точками, но не с линиями.

ответ

5

Вы должны использовать group в дополнение к color ...

ggplot(data, aes(expt, value, group=var, color=var)) + geom_line() 

дает мне этот выход:

enter image description here

+0

Спасибо. Теперь я понимаю, почему это правильное решение, но я не понимаю, почему он работает, когда expt является числовым. Похоже, этого не должно быть. Также сообщение об ошибке, вероятно, неверно. – tmalsburg

+1

@tmalsburg некоторые объяснения здесь: [plotting-lines-and-the-group-aesthetic-in-ggplot2] (http://stackoverflow.com/questions/10357768/plotting-lines-and-the-group-aesthetic-in -ggplot2) –

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