Построение нескольких переменных в ggplot

У меня есть таблица данных, которая выглядит следующим образом

pos gtt1    gtt2    ftp1    ftp2
8   100 123 49  101
9   85  93  99  110
10  111 102 53  113
11  88  110 59  125
12  120 118 61  133
13  90  136 64  145
14  130 140 104 158
15  78  147 74  167
16  123 161 81  173
17  160 173 88  180
18  117 180 94  191
19  89  188 104 199
20  175 197 107 213

Я хочу сделать линейный график с pos (положение) на оси х, используя ggplot. Я пытаюсь показать gtt1 а также gtt2 линии в один цвет и ftp1 а также ftp2 в другом цвете, потому что они являются отдельными группами (gtt и ftp) образцов. Я успешно создал график, но все четыре линии имеют разные цвета. Я хотел бы оставить в легенде только gtt и ftp (не все четыре). Бонус, как я могу сделать эти линии немного плавными.

Вот что я сделал до сих пор:

library(reshape2);library(ggplot2)
data <- read.table("myfile.txt",header=TRUE,sep="\t")
data.melt <- melt(data,id="pos")
ggplot(data.melt,aes(x=pos, y=value,colour=variable))+geom_line()

заранее спасибо

1 ответ

Самый простой способ - изменить данные немного по-другому:

dd1 = melt(dd[,1:3], id=c("pos"))
dd1$type = "gtt"
dd2 = melt(dd[,c(1, 4:5)], id=c("pos"))
dd2$type = "ftp"
dd.melt = rbind(dd1, dd2)

Теперь у нас есть столбец, определяющий переменную "тип":

R> head(dd.melt, 2)
  pos variable value type
1   8     gtt1   100  gtt
2   9     gtt1    85  gtt

Как только данные в этом формате, команда ggplot проста:

ggplot(dd.melt,aes(x=pos, y=value))+ 
  geom_line(aes(colour=type, group=variable)) + 
  scale_colour_manual(values=c(gtt="blue", ftp="red"))

Вы можете добавить сглаженные линии, используя stat_smooth:

 ##span controls the smoothing
 g  + stat_smooth(se=FALSE, span=0.5)
Другие вопросы по тегам