0

我有一个看起来像这样的数据表 -

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 轴上制作带有(位置)的折线图。我试图以一种颜色和另一种颜色显示gtt1线条,gtt2因为它们是不同的样本组(gtt 和 ftp)。我已经成功创建了图表,但是所有四条线都是不同的颜色。我想在图例中只保留 gtt 和 ftp(不是全部四个)。奖金,我怎样才能让这些线条有点平滑。ftp1ftp2

这是我到目前为止所做的:

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()

提前致谢

4

1 回答 1

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)
于 2013-06-03T08:23:22.997 回答