Построение нескольких переменных в 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)