美文网首页ggplot2R plotR语言做图
画图笔记:ggplot2优化柱形图(添加误差线、差异比较分析)

画图笔记:ggplot2优化柱形图(添加误差线、差异比较分析)

作者: 单细胞空间交响乐 | 来源:发表于2021-06-11 09:32 被阅读0次

    马上放假了,今天我们来点基础的东西,画图的操作。

    不想要这么丑的图。 图片

    要优雅的输出结果 图片

    「ggplot2中柱状图基本绘制函数常用geom_bar()」

    参数介绍:

    「data和mapping是ggplot的基本参数,数据和映射。」 mapping:使用aes函数指定,为aesthetic attributes的缩写。但字符串映射使用aes_string。aes:颜色(color颜色或边框颜色、fill填充颜色和 alpha透明度) 形状(linetype线型、size点的大小或线的宽度和 shape形状) 位置 (x, y, xmin, xmax, ymin, ymax, xend, yend) 指定数据分组和顺序的映射group和order,另一类是字符串映射。

    关于映射的详细介绍->

    一张统计图就是从数据到几何对象(点、线、条形等)的图形属性(颜色、形状、大小等)的一个映射。

    • ✦ 数据(Data),最基础的是可视化的数据和一系列图形映射(aesthetic mappings),该映射描述了数据中的变量如何映射到可见的图形属性。
    • ✦ 几何对象(Geometric objects, geoms)代表在图中实际看到的点、线、多边形等。
    • ✦ 统计转换(Statistical trassformations, stats)是对数据进行某种汇总,例如将数据分组创建直方图,或将一个二维的关系用线性模型进行解释。
    • ✦ 标度(Scales)是将数据的取值映射到图形空间,例如用颜色、大小或形状来表示不同的取值,展现标度的常见做法是绘制图例和坐标轴。
    • ✦ 坐标系(Coordinate system, coord)描述数据是如何映射到图形所在的平面,同时提供看图所需的坐标轴和网格线。
    • ✦ 分面(faceting)如何将数据分解为子集,以及如何对子集作图并展示。
    • ✦ 主题(theme)控制细节显示,例如字体大小和图形的背景色。

    「stat:」 设置统计方法,有效值是count(默认值) 和 identity,其中,count表示条形的高度是变量的数量,不能设定y值。identity表示条形的高度是变量的值;对于连续性变量使用bin,转换的结果使用变量density来表示。

    「position:」 位置调整,有效值是stack、dodge和fill,默认值是stack(堆叠),是指两个条形图堆叠摆放,dodge是指两个条形图并行摆放,fill是指按照比例来堆叠条形图,每个条形图的高度都相等,但是高度表示的数量是不尽相同的。

    「width:」 条形图的宽度,是个比值,默认值是0.9

    「color:」条形图的线条颜色

    「fill:」 条形图的填充色

    基本演示

    读取ImagJ数据及转换

    #读取ImageJ
    dat=read.csv("Results.csv")
    class(dat)
    #加入分组信息
    Group=rep(c("NC","A","B","A+B"),each=3)
    dat$Group=Group
    colnames(dat)
    dat=dat[,c("IntDen","Group")]
    a=dat[dat$Group=="NC",]
    a=mean(a$IntDen)
    dat$Relative=dat$IntDen/a
    
    柱状图的顺序是由因子水平决定的,可以手动设置。
    dat$Group=factor(dat$Group,levels = c("NC","A","B","A+B"))
    

    基本画图操作

    配色方案->最优质配色包 注意先按照某一列数据分色,然后手动填充颜色
    library(ggplot2)
    library(ggpubr)
    ggplot(dat,aes(x=Group,y=Relative,fill=Group))+
    geom_bar(stat="identity",width = 0.5,color="black")+
    scale_fill_manual(values=c("#017A4AFF", "#FFCE4EFF", "#3D98D3FF","#FF363CFF"))+
    theme_minimal()#主题皮肤
    
    图片

    <figcaption style="margin: 5px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; text-align: center; font-size: 13px; color: rgb(43, 43, 43);">image.png</figcaption>

    数据调整及误差线增加

    在ggplot2中可以直接结合stat_summary函数快速进行数据统计->链接

    所以stat可以设置为summary,将柱状图的高度设置为各组的均值并联合stat_summary函数增加误差线。

    ggplot(dat,aes(x=Group,y=Relative,fill=Group))+
    geom_bar(stat="summary",fun=mean,width = 0.5,color="black")+
    scale_fill_manual(values=c("#017A4AFF", "#FFCE4EFF", "#3D98D3FF","#FF363CFF"))+
    stat_summary(fun.data = 'mean_sd', geom = "errorbar", colour = "black",
    width = 0.25,position = position_dodge( .9))+
    theme_minimal()
    
    图片

    增加抖动的点图

    ggplot(dat,aes(x=Group,y=Relative,fill=Group))+
    geom_bar(stat="summary",fun=mean,width = 0.5,color="black")+
    scale_fill_manual(values=c("#017A4AFF", "#FFCE4EFF", "#3D98D3FF","#FF363CFF"))+
    stat_summary(fun.data = 'mean_sd', geom = "errorbar", colour = "black",
    width = 0.25,position = position_dodge( .9))+
    geom_jitter( size =5,
    alpha = 0.5,
    shape = 21) +
    theme_minimal()
    
    图片

    调整下字体大小和线条

    p <- ggplot(dat,aes(x=Group,y=Relative,fill=Group))+
    geom_bar(stat="summary",fun=mean,width = 0.5)+
    scale_fill_manual(values=c("#017A4AFF", "#FFCE4EFF", "#3D98D3FF","#FF363CFF"))+
    stat_summary(fun.data = 'mean_sd', geom = "errorbar", colour = "black",
    width = 0.25,size=1,position = position_dodge( .9))+
    geom_jitter( size =5,
    alpha = 0.5,
    shape = 21,stroke = 1) +
    theme_minimal()+
    theme(axis.text.x = element_text(size=20),
    axis.text.y = element_text(size=20),
    axis.title.x = element_text(size=20),
    axis.title.y = element_text(size=20),
    legend.title= element_text(size=20),
    legend.text= element_text(size=15))
    
    图片

    组间差异性分析

    使用stat_compare_means()函数。

    my_comparisons <- list(c("NC", "A"), c("NC", "B"), c("B", "A+B"))
    p <- ggplot(dat,aes(x=Group,y=Relative,fill=Group))+
    geom_bar(stat="summary",fun=mean,width = 0.5)+
    scale_fill_manual(values=c("#017A4AFF", "#FFCE4EFF", "#3D98D3FF","#FF363CFF"))+
    stat_summary(fun.data = 'mean_sd', geom = "errorbar", colour = "black",
    width = 0.25,size=1,position = position_dodge( .9))+
    geom_jitter( size =5,
    alpha = 0.5,
    shape = 21,stroke = 1) +
    theme_minimal()+
    theme(axis.text.x = element_text(size=20),
    axis.text.y = element_text(size=20),
    axis.title.x = element_text(size=20),
    axis.title.y = element_text(size=20),
    legend.title= element_text(size=20),
    legend.text= element_text(size=15))+
    stat_compare_means(comparisons=my_comparisons,method = "t.test",
    label = "p.forma",bracket.size = 1,size=5)
    p
    ggsave(p,filename = "westernblot.png")
    
    图片

    要放假了,简单学习一下就好,大家好好休息,生活很好,等你超越~~~

    相关文章

      网友评论

        本文标题:画图笔记:ggplot2优化柱形图(添加误差线、差异比较分析)

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