R语言可视化(二):折线图绘制

02.折线图绘制


清除当前环境中的变量

rm(list=ls())

设置工作目录

setwd("C:/Users/Dell/Desktop/R_Plots/02lineplot/")

base plot函数绘制普通折线图

# 读取示例数据
data <- read.table("demo1_lineplot.txt", header = T, check.names = F)
# 查看数据
head(data)
##   x   y1   y2   y3
## 1 1  7.0 -0.2 -0.9
## 2 2  6.9  0.8  0.6
## 3 3  9.5  5.7  3.5
## 4 4 14.5 11.3  8.4
## 5 5 18.2 17.0 13.5
## 6 6 21.5 22.0 17.0

dim(data)
## [1] 12  4

attach(data)
plot(x, y1, type = "b", pch = 15, lty = 1, col = "red", xlab = "时间", ylab = "反应强度", ylim = c(-1,30))
lines(x, y2, type = "b", pch = 16, lty = 2, col = "blue")
lines(x, y3, type = "b", pch = 17, lty = 3, col = "purple")
legend("topleft", inset = 0.02, title = "样品", c("y1","y2","y3"), 
       lty = c(1,2,3), pch = c(15,16,17), col = c("red","blue","purple"),
       bg = "gray")
detach(data)
image.png

ggplot2包绘制带误差棒的折线图

library(ggplot2)
# 读取示例数据
data2 <- read.table("demo2_lineplot.txt", header = T, row.names = 3, sep="\t", check.names = F)
data2$Stage <- factor(data2$Stage,levels = c("0 min","10 min","20 min","30 min","45 min","60 min","90 min","120 min"))
# 查看数据
head(data2)
##          Stage GeneSymbol Expression Log10(Expression)
## 0min_1   0 min       EGT2   1207.380          3.081844
## 0min_2   0 min       EGT2   1209.970          3.082775
## 0min_3   0 min       EGT2   1089.770          3.037335
## 10min_1 10 min       EGT2    801.201          2.903741
## 10min_2 10 min       EGT2    704.513          2.847889
## 10min_3 10 min       EGT2    597.385          2.776254

#+++++++++++++++++++++++++
# Function to calculate the mean and the standard deviation
# for each group
#+++++++++++++++++++++++++
# data : a data frame
# varname : the name of a column containing the variable
#to be summariezed
# groupnames : vector of column names to be used as
# grouping variables
# 定义函数计算平均值和标准差
data_summary <- function(data, varname, groupnames){
  require(plyr)
  summary_func <- function(x, col){
    c(mean = mean(x[[col]], na.rm=TRUE),
      sd = sd(x[[col]], na.rm=TRUE))
  }
  data_sum <- ddply(data, groupnames, .fun=summary_func, varname)
  data_sum <- rename(data_sum, c("mean" = varname))
  return(data_sum)
}

data2 <- data_summary(data2, varname="Expression", 
                      groupnames=c("Stage"))
head(data2)
##    Stage Expression        sd
## 1  0 min  1169.0400  68.66205
## 2 10 min   701.0330 101.95255
## 3 20 min   701.8853 196.06879
## 4 30 min   682.8983 186.25895
## 5 45 min   788.3107  72.94692
## 6 60 min   749.8397 261.03729

# Standard deviation of the mean
ggplot(data2, aes(x=Stage, y=Expression, group=1, color=Stage)) + 
      geom_errorbar(aes(ymin=Expression-sd, ymax=Expression+sd), width=.1) +
      geom_line() + geom_point()+
      scale_color_brewer(palette="Paired")+theme_bw()
image.png

ggplot2包绘制聚类趋势折线图

# 读取示例数据
data3 <- read.table("demo3_lineplot.txt",header = T,check.names = F)
# 查看数据
head(data3)
##     Gene   Stage1    Stage2    Stage3    Stage4    Stage5     Stage6
## 1 Gene01 1.155864 0.9021231 -1.085794 -1.265632 0.2614499 0.03198916
## 2 Gene02 1.145877 0.8973008 -1.095785 -1.266790 0.2721922 0.04720437
## 3 Gene03 1.125560 0.8994570 -1.124195 -1.255849 0.2777603 0.07726622
## 4 Gene04 1.114566 0.8681610 -1.115066 -1.283721 0.3224320 0.09362759
## 5 Gene05 1.129178 0.8700930 -1.097511 -1.288186 0.3142035 0.07222275
## 6 Gene06 1.138877 0.8809866 -1.092992 -1.281036 0.2962881 0.05787733
##    Group
## 1 group1
## 2 group1
## 3 group1
## 4 group1
## 5 group1
## 6 group1

library(reshape2)
# 将宽数据格式转换为长数据格式
data3 = melt(data3)
## Using Gene, Group as id variables

head(data3)
##     Gene  Group variable    value
## 1 Gene01 group1   Stage1 1.155864
## 2 Gene02 group1   Stage1 1.145877
## 3 Gene03 group1   Stage1 1.125560
## 4 Gene04 group1   Stage1 1.114566
## 5 Gene05 group1   Stage1 1.129178
## 6 Gene06 group1   Stage1 1.138877

names(data3) <- c("Gene","Group","Stage","Expression")

ggplot(data3,aes(x=Stage, y=Expression, group=Gene)) + geom_line(color="gray90",size=0.8) + 
      geom_hline(yintercept =0,linetype=2) +
      stat_summary(aes(group=1),fun.y=mean, geom="line", size=1.2, color="#c51b7d") + 
      facet_wrap(.~Group) + theme_bw() + 
      theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
            axis.text = element_text(size=8, face = "bold"),
            strip.text = element_text(size = 10, face = "bold"))
image.png
sessionInfo()
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=Chinese (Simplified)_China.936 
## [2] LC_CTYPE=Chinese (Simplified)_China.936   
## [3] LC_MONETARY=Chinese (Simplified)_China.936
## [4] LC_NUMERIC=C                              
## [5] LC_TIME=Chinese (Simplified)_China.936    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] reshape2_1.4.3 plyr_1.8.4     ggplot2_3.2.0 
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.1         knitr_1.23         magrittr_1.5      
##  [4] tidyselect_0.2.5   munsell_0.5.0      colorspace_1.4-1  
##  [7] R6_2.4.0           rlang_0.4.0        stringr_1.4.0     
## [10] dplyr_0.8.3        tools_3.6.0        grid_3.6.0        
## [13] gtable_0.3.0       xfun_0.8           withr_2.1.2       
## [16] htmltools_0.3.6    yaml_2.2.0         lazyeval_0.2.2    
## [19] digest_0.6.20      assertthat_0.2.1   tibble_2.1.3      
## [22] crayon_1.3.4       RColorBrewer_1.1-2 purrr_0.3.2       
## [25] glue_1.3.1         evaluate_0.14      rmarkdown_1.13    
## [28] labeling_0.3       stringi_1.4.3      compiler_3.6.0    
## [31] pillar_1.4.2       scales_1.0.0       pkgconfig_2.0.2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269