plot(iris[,1],iris[,3],col=iris[,5])
text(6.5,4, labels = 'hello')
代码语言:r复制library(ggpubr)
p = ggboxplot(iris, x = "Species", y = "Sepal.Length",color = "Species",shape = "Species",add = "jitter");p
代码语言:r复制my_comparisons <- list(c("setosa","versicolor"),
c("setosa","verginica"),
c("versicolor","verginica"))
p stat_compare_means(comparisons = my_comparisons,
aes(label = after_stat(p.signif)))
1 R语言画图
1.1 常用可视化R包和函数
作图:base, ggplot2, ggpubr
拼图:par里的mfrow, grid.arrange, cowplot, patchwork
导出:经典三段论、ggsave、eoffice-topptx
#ggsave服务于ggplot2
#eoffice可将图导出为ppt内可编辑元素
1.2 基础包(base)-绘图函数
高级/低级绘图函数
#高级绘图函数可独立于其它函数,低级绘图函数:用于在图中添加元素
高级绘图函数:
低级绘图函数:
plot(iris,1,iris,3,col=iris,5) text(6.5,4,labels = "hello") #plot()和text()分别为高级/低级绘图函数,须一起运行,单独运行text()则无法运行
1.3 ggplot2与ggpubr
ggplot2:
灰色背景
ggpubr:
ggplot2青春版,图片好看一些,ggplot2也可以用代码进行调整
1.4 ggplot2语法
1.4.1 入门级绘图模板
ggplot(data = <DATA>)
- <GEOMFUNCTION>(mapping = aes(<MAPPINGS>)) #MAPPINGS:映射 #需要:作图数据、横纵坐标 #可用ggplot2作图的函数均以geom命名,代表不同图像 #<MAPPING>处输入x = ,y = 行/列名,无需加"" #行/列名不带引号,函数间写“ ”
1.4.2 属性设置
统一设置
颜色:color:字符串,blue, red等;
大小:size:单位mm;
形状:shape:0:20代表不同形状,以编号表示;
透明度:alpha;
填充颜色:fill
#统一设置需为有意义的值
示例:
ggplot(data = iris) geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length), color = "blue", #颜色为蓝色 size = 5, #点的大小5mm alpha = 0.5, #透明度为50 % shape = 8) #点的形状
映射:按照数据框的某一列定义某个属性
#可以将点设置成多个颜色,与数据对应,而非统一颜色
#统一设置时的参数从属于geom_function(),输入值为"颜色"(可设置为多个颜色,但不建议);映射的参数从属于aes(),输入值为行名
#自行指定映射的具体颜色
scale_color_manual(value=c("color","color")) ##必须先有aes(color) ###可用16进制颜色编码进行指定 ###也可用色彩R包paletteer
#图形分类关系与设置颜色参数
空心(无填充):color;实心(无边框):color;双色(边框 填充):color fill
##设置方法与设置颜色相同,在aes()中加入shape=<数字编号>
示例:
ggplot(data = iris) geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species)) scale_color_manual(values=c("blue","grey","red","#53485f"))
paleteer示例:
palettes_d_names ggplot(data = iris) geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species)) scale_color_paletteer_d("awtools::mpalette")#"配色R包::配色名"
1.4.3 几何对象
一个geom函数所画出来的所有元素被称为几何对象
几何对象可叠加(在同一张图展示多中图像)
多张图存在图层顺序!具体顺序按照书写顺序从下往上安排图层
ggplot(data = iris) geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length)) geom_smooth(mapping = aes(x = Sepal.Length,y = Petal.Length)) -->简化为 ggplot(data = iris,mapping = aes(x = Sepal.Length,y = Petal.Length)) geom_point() geom_smooth() -->单独为点图添加颜色 ggplot(data = iris,mapping = aes(x = Sepal.Length,y = Petal.Length)) geom_point(mapping = aes(color = Species)) geom_smooth() 或 ggplot(data = iris,mapping = aes(x = Sepal.Length,y = Petal.Length)) geom_point(color = red") geom_smooth() aes()代表映射,只有键入该函数才能从数据中读取相应的内容 可以在已有公共设置下进行二次映射
代码不报错不代表没错!!!
重合会导致表现数据减少,图片存在歧义
1.4.4 位置
解决方法:
geom_point(position = "jitter") 或 geom_jitter
1.4.5 坐标系
coord_flip()#翻转坐标系
1.4.6 主题
theme_bw()#改变主题,去掉灰色背景 theme_classic()#去掉背景格纹 theme_dark()#深色主题 theme_minimal()#去背景 theme(legend.position="top")#图例改到上方
1.5 ggpubr
ggpubr画出的图像可以赋值(ggplot2也可赋值),可以进行后续改动/拼图
示例:
p = ggboxplot(iris, x = "Species", y = "Sepal.Length",color = "Species",shape = "Species",add = "jitter")
组间比较
示例:
my_comparisons <- list(c("setosa","versicolor") c("setosa","verginica") c("versicolor","verginica")) p stat_compare_means(comparisons = my_comparisons, aes(label = after_stat(p.signif))) 要求:
- 必须是list
- 画几条线就要有几个元素
- 必须要有横坐标两两组合组成的向量,即comparisons比较的参数
2 图片保存
2.1 ggplot2系列:
ggsave("iris_box_ggpubr.png") ggsave(p,filename = "iris_box_ggpubr2.png")#已赋值 可使用绝对路径进行保存,但是更换设备无法从该路径进行导入 绝对路径:按照储存路径各级文件夹进行溯源 相对路径:”../../<filename>“ ggsave(p,filename = "fig/iris_box_ggpubr2.png")#保存至工作目录下的fig文件夹,若不存在该fig文件夹可新建文件夹。
2.2 通用:三段论
pdf("test.pdf")#保存的函数及文件名 ...#作图代码 dev.off()#关闭画板
2.3 eoffice系列
topptx(p,"iris_box_ggpubr.pptx")#新建并保存为pptx文件 对点过多的图不适用(e.g.火山图、热图),会导致ppt卡死
3 拼图
R包patchwork
优点:
1.语法简单,完美兼容ggplot2
2.拼图比例设置简单
#(1)支持p1 p2
#(2)布局代码易读性更强
#(3)可给子图添加标记
#(4)可统一修改所有子图
#(5)可将子图图例移到一起,整体性好
##常见问题
代码可运行却不出图
画板被占用——关闭画板
dev.off()#多次运行至null device,再重新运行代码或dev.new()
引用自生信技能树