2013-06-03 129 views
0

多个变量我有它看起来像这 -绘制在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 x轴的数据表。我试图用另一种颜色显示gtt1gtt2行,而另一种颜色显示ftp1ftp2,因为它们是样本的单独组(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() 

在此先感谢

+0

添加到您的情节:'+ scale_colour_manual(值= c(gtt1 =“blue”,gtt2 =“blue”,ftp1 =“red”,ftp2 =“red”)) – bdemarest

回答

2

最简单的方法是重新塑造你的数据在一个稍微不同的方式:

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)