2015-08-06 1 views
3

Давайте посмотрим на некоторые фиктивные данные. У меня есть различные комбинации предметов, лечения и испытаний. Фактически, каждый субъект связан только с конкретным лечением (звучит глупо, но это всего лишь пример).Группировка по коэффициенту с уклоненным положением в ggplot

library(ggplot2) 
d = read.table(text = ' 
subject treatment trial  value 
1 1 1 4.5 
2 2 1 3.2 
3 3 1 1.2 
1 1 2 4.8 
2 2 2 3.5 
3 3 2 1.3 
1 1 3 4.2 
2 2 3 2.9 
3 3 3 1 
4 1 1 4.3 
5 2 1 3.9 
6 3 1 1.1 
4 1 2 4.3 
5 2 2 3.1 
6 3 2 1.8 
4 1 3 4 
5 2 3 2.6 
6 3 3 1.3 
', header = TRUE) 
d$treatment = as.factor(d$treatment) 
d$subject = as.factor(d$subject) 
d$trial = as.factor(d$trial) 

dodge = position_dodge(.3) 
p = ggplot(d, aes(x = treatment, y = value, color = trial, label = subject)) + 
    geom_point(position = dodge) + 
    scale_y_continuous(breaks = pretty_breaks(n = 10)) + 
    ylim(1,5) + 
    geom_text(hjust = 1.5, position = dodge, size = 3) 

print(p) 

Сюжет я получаю это:

Я хотел бы добавить линию между теми же субъектами, а это означает, что я хотел бы объединить все «4» S в левом верхнем углу с черной линией.

Простой

geom_line(aes(group = subject), position = dodge) 

не работает, хотя, как он somemhow не уважает позицию и просто рисует вертикальную линию:

Как еще я могу достичь этого ?

ответ

5

Я думаю, вам нужно переосмыслить свой подход - уклонение не работает хорошо с линиями. Почему бы не использовать фасетирование и явно отобразить пробную версию по оси x?

ggplot(d, aes(trial, y = value)) + 
    geom_line(aes(group = subject)) + 
    geom_point(aes(colour = treatment)) + 
    geom_text(aes(label = subject), hjust = 1.5, size = 3) + 
    facet_wrap(~ treatment) 

.....

+0

Высокий. Я полностью забыл о фасетке - это в большей степени имеет смысл для «категоричных» осей x. – slhck

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