美文网首页
NC图片复现:改造一下折线图提高可读性

NC图片复现:改造一下折线图提高可读性

作者: KS科研分享与服务 | 来源:发表于2022-12-06 15:57 被阅读0次

    看NC文章发现一幅图,是一个折线图,折线图没什么好说的,很简单就可以实现。但是我突发奇想,觉得这样的折线图可读性不是很高,不同的线,不同的颜色,组别也别较多,根本分不清谁是谁,而且找对应颜色也要花费不少时间。所以我们改造下,直接把分组标注在线上!

    图片

    原文提供了表达数据,当然这篇文章还是巩固下数据的基本处理。原始数据和注释代码已上传群文件!!!
    原文提供的数据是基因在不同事情的表达数据,而且每个组都有重复,我们首先要求每个时期每个组的平均值。

    
    setwd('D:/KS项目/公众号文章/改造文献折线图')
    df <- read.csv("df.csv", header = T, row.names = 1)
    library(ggplot2)
    library(reshape2)
    df <- t(df)
    df <- as.data.frame(df)
    df$group <- c(rep('pES',3), rep('X6dSSEA4',2),rep('X8dRFP.GFP',2),
                  rep('X10dRFP.GFP',2),rep('X12dRFP.GFP',2),rep('X14dRFP.GFP',2),
                  rep('nES',3))
    

    计算平均值并组成新的数据:

    
    library(forcats)
    df$group <- as.factor(df$group)
    df$group <- fct_inorder(df$group)
    
    mean_df <- as.data.frame(unique(df$group))
    colnames(mean_df) <- 'group'
    gene <- colnames(df[,-11])
    for(i in 1:length(gene)){
      A <- aggregate(df[,gene[i]], by=list(group=df$group),mean)
      A <- A[,-1]
      A <- as.data.frame(A)
      colnames(A) <- gene[i]
      mean_df <- cbind(mean_df, A)
    }
    

    数据转化,ggplot作图:

    
    mean_df_long <-melt(mean_df, id.vars = c("group"), 
                      measure.vars = 2:11,
                      variable.name = c('gene'),
                      value.name = 'value')
    
    ggplot(mean_df_long, aes(x=group,y=value, 
                             group=gene, 
                             colour=as.factor(gene))) + 
      geom_line(lwd=1.5) +
      xlab("") +
      ylab("Expression")+
      theme_classic() + 
      theme(axis.text.x = element_text(colour = "black", size = 12,angle = 45,hjust = 1),
            axis.text.y = element_text(colour = "black", size = 10),
            axis.title.y = element_text(color = 'black', size = 12),
            axis.line = element_line(size = 1))
    
    图片

    改造的思路就是最后一列添加点,用geom_text加上label:

    library(ggrepel)
    data <- subset(mean_df_long, group=='nES')
    ggplot(mean_df_long, aes(x=group,y=value, 
                             group=gene, 
                             colour=as.factor(gene))) + 
      geom_line(lwd=1.5) +
      geom_point(data=data, aes(x= group, y= value), cex=1)+
      xlab("") +
      ylab("Expression")+
      theme_classic() + 
      theme(axis.text.x = element_text(colour = "black", size = 12,angle = 45,hjust = 1),
            axis.text.y = element_text(colour = "black", size = 10),
            axis.title.y = element_text(color = 'black', size = 12),
            axis.line = element_line(size = 1))+ 
      theme(legend.position="none")+
      geom_text_repel(data=data, aes(label=gene),size=4, fontface="italic", 
                      size=3, segment.size=0.5, nudge_x=1, direction="y", hjust=0,nudge_y = 1)
    
    图片

    这样效果是不是好多了,自己看趋势,读者读起来更会更加方便。强烈建议SCI论文就该如此,很多时候光照legend对应的分组都得半天,尤其是颜色比较接近的时候,真的很不好。觉得分享有用的点个赞,分享一下再走呗!

    相关文章

      网友评论

          本文标题:NC图片复现:改造一下折线图提高可读性

          本文链接:https://www.haomeiwen.com/subject/eqzwfdtx.html