我有一个看起来像这样的数据表 -
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
我想使用ggplot在x轴上创建一个带pos
(位置)的折线图。我试图用一种颜色显示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()
提前致谢
答案 0 :(得分: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)
现在我们有一个列指定变量“type”:
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)