profile="Pos;H3K27ac -5000;8.7 -4000;8.4 -3000;8.3 -2000;7.2 -1000;3.6 0;3.6 1000;7.1 2000;8.2 3000;8.4 4000;8.5 5000;8.5"
profile_text <- read.table(text=profile, header=T, row.names=1, quote="",sep=";") # 在melt時保留位置信息 # melt格式是ggplot2畫圖最喜歡的格式 # 好好體會下這個格式,雖然多佔用了很多空間,可是確實很方便 # 這裏能夠用 `xvariable`,也能夠是其它字符串,但須要保證後面與這裏的一致 # 由於這一列是要在X軸顯示,因此起名爲`xvariable`。 profile_text$xvariable = rownames(profile_text) library(ggplot2) library(reshape2) data_m <- melt(profile_text, id.vars=c("xvariable")) data_m xvariable variable value 1 -5000 H3K27ac 8.7 2 -4000 H3K27ac 8.4 3 -3000 H3K27ac 8.3 4 -2000 H3K27ac 7.2 5 -1000 H3K27ac 3.6 6 0 H3K27ac 3.6 7 1000 H3K27ac 7.1 8 2000 H3K27ac 8.2 9 3000 H3K27ac 8.4 10 4000 H3K27ac 8.5 11 5000 H3K27ac 8.5
# variable和value爲矩陣melt後的兩列的名字,內部變量, variable表明了點線的屬性,value表明對應的值。 p <- ggplot(data_m, aes(x=xvariable, y=value), color=variable) + geom_line() # 圖會存儲在當前目錄的Rplots.pdf文件中,若是用Rstudio,能夠不運行dev.off() dev.off()
geom_path: Each group consists of only one observation.Do you need to adjust the group aesthetic?
p <- ggplot(data_m, aes(x=xvariable, y=value, color=variable, group=variable)) + geom_line() + theme(legend.position=c(0.1,0.9)) p
summary(data_m) xvariable variable Length:11 H3K27ac:11 Class :character Mode :character
data_m$xvariable <- as.numeric(data_m$xvariable) #再檢驗下 is.numeric(data_m$xvariable) [1] TRUE
# 注意斷行時,加號在行尾,不能放在行首 p <- ggplot(data_m, aes(x=xvariable, y=value,color=variable,group=variable)) + geom_line() + theme(legend.position=c(0.1,0.8)) p
p <- ggplot(data_m, aes(x=xvariable, y=value,color=variable,group=variable)) + geom_line() + stat_smooth(method="auto", se=FALSE) + theme(legend.position=c(0.1,0.8)) p
p <- ggplot(data_m, aes(x=xvariable, y=value,color=variable,group=variable)) + stat_smooth(method="auto", se=FALSE) + theme(legend.position=c(0.1,0.8)) p
profile = "Pos;h3k27ac;ctcf;enhancer;h3k4me3;polII -5000;8.7;10.7;11.7;10;8.3 -4000;8.4;10.8;11.8;9.8;7.8 -3000;8.3;10.5;12.2;9.4;7 -2000;7.2;10.9;12.7;8.4;4.8 -1000;3.6;8.5;12.8;4.8;1.3 0;3.6;8.5;13.4;5.2;1.5 1000;7.1;10.9;12.4;8.1;4.9 2000;8.2;10.7;12.4;9.5;7.7 3000;8.4;10.4;12;9.8;7.9 4000;8.5;10.6;11.7;9.7;8.2 5000;8.5;10.6;11.7;10;8.2" profile_text <- read.table(text=profile, header=T, row.names=1, quote="",sep=";") profile_text$xvariable = rownames(profile_text) data_m <- melt(profile_text, id.vars=c("xvariable")) data_m$xvariable <- as.numeric(data_m$xvariable) # 這裏group=variable,而不是group=1 (若是上面你用的是1的話) # variable和value爲矩陣melt後的兩列的名字,內部變量, variable表明了點線的屬性,value表明對應的值。 p <- ggplot(data_m, aes(x=xvariable, y=value,color=variable,group=variable)) + stat_smooth(method="auto", se=FALSE) + theme(legend.position=c(0.85,0.2)) p
profile = "Pos;h3k27ac;ctcf;enhancer;h3k4me3;polII -5000;8.7;10.7;11.7;10;8.3 -4000;8.4;10.8;11.8;9.8;7.8 -3000;8.3;10.5;12.2;9.4;7 -2000;7.2;10.9;12.7;8.4;4.8 -1000;3.6;8.5;12.8;4.8;1.3 0;3.6;8.5;13.4;5.2;1.5 1000;7.1;10.9;12.4;8.1;4.9 2000;8.2;10.7;12.4;9.5;7.7 3000;8.4;10.4;12;9.8;7.9 4000;8.5;10.6;11.7;9.7;8.2 5000;8.5;10.6;11.7;10;8.2" profile_text <- read.table(text=profile, header=T, row.names=1, quote="",sep=";") profile_text_rownames <- row.names(profile_text) profile_text$xvariable = rownames(profile_text) data_m <- melt(profile_text, id.vars=c("xvariable")) # 就是這一句,會常常用到 data_m$xvariable <- factor(data_m$xvariable, levels=profile_text_rownames, ordered=T) # geom_line設置線的粗細和透明度 p <- ggplot(data_m, aes(x=xvariable, y=value,color=variable,group=variable)) + geom_line(size=1, alpha=0.9) + theme(legend.position=c(0.85,0.2)) + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) # stat_smooth #p <- ggplot(data_m, aes(x=xvariable, y=value,color=variable,group=variable)) + stat_smooth(method="auto", se=FALSE) + theme(legend.position=c(0.85,0.2)) + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) p
到此完成了線圖的基本繪製,雖然還能夠,但還有很多須要提升的地方,好比在線圖上加一條或幾條垂線、加個水平線、修改X軸的標記(好比0換爲TSS)、設置每條線的顏色等。bash