马上放假了,今天我们来点基础的东西,画图的操作。
不想要这么丑的图。
要优雅的输出结果
「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()#主题皮肤
数据调整及误差线增加
在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")
要放假了,简单学习一下就好,大家好好休息,生活很好,等你超越~~~