本文首发于“生信补给站”公众号 https://mp.weixin.qq.com/s/A5nqo6qnlt_5kF3_GIrjIA
数设置,图形精雕细琢
原创生信补给站生信补给站 2019-08-19 23:30
收录于合集#R-ggplot2可视化23个
学习了ggplot2|详解八大基本绘图要素后,就可以根据自己的需要绘制图形。前面也给出了一些ggplot2绘制生信分析基本图形的例子pheatmap|暴雨暂歇,“热图”来袭!!!,ggplot2-plotly|让你的火山图“活”过来,ggplot2|扩展包从0开始绘制雷达图,ggplot2| 绘制KEGG气泡图,ggplot2|绘制GO富集柱形图,ggplot2|从0开始绘制PCA图,ggplot2|ggpubr进行“paper”组图合并,本文将介绍一些对legend的细节操作来完成图形的“精雕细琢”。
载入R包和数据
mtcars数据集作为示例数据 library(ggplot2) #查看数据集 head(mtcars) mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 # 将cyl gear变量转为因子变量 mtcars$cyl<-as.factor(mtcars$cyl) mtcars$gear <- as.factor(mtcars$gear)
绘制基本图形
#gear为横坐标,对mpg做箱线图,gear填充颜色
p <- ggplot(mtcars, aes(x=gear, y=mpg, fill=gear)) + geom_boxplot()
p
设置 legend position
使用 theme() 参数设置legend位置
# 可选参数为“left”,“top”, “right”, “bottom”.
p + theme(legend.position="bottom")
# 数值向量 c(x,y) 调控位置
p + theme(legend.position = c(0.8, 0.2))
更改legend 的title , font styles
# legend title p + theme(legend.title = element_text(colour="blue", size=10, face="bold")) # legend labels p + theme(legend.text = element_text(colour="blue", size=10, face="bold"))
设置 legend 背景色
#fill设置legend box背景色,colour设置边框颜色
p+theme(legend.background=element_rect(fill="lightblue",
size=0.5, linetype="solid",
colour="darkblue"))
设置legend items顺序
scale_x_discrete自定义设置顺序
p + scale_x_discrete(limits=c("3", "5", "4"))
去除legend
# 去除legend title p + theme(legend.title = element_blank()) # 去除整个legend p + theme(legend.position='none')
guides 设置specific aesthetic
使用guides()参数来设置或移除特定的美学映射(fill, color, size, shape等).
因子变量cyl和gear映射为点图的颜色和形状,qsec决定点的大小。
更多用法可参考 链接
p <- ggplot(data = mtcars, aes(x=mpg, y=wt, color=cyl, size=qsec, shape=gear))+ geom_point() # 不设定specific aesthetic时候 p
设置多个legend的位置
# 更改 legend position p +theme(legend.position="bottom") # Horizontal legend box p +theme(legend.position="bottom", legend.box = "")
设置multiple guides顺序
The function guide_legend() is used : p+guides(color = guide_legend(order=1), size = guide_legend(order=2), shape = guide_legend(order=3))
去除particular aesthetic
通过设置FALSE,可不展示对应的legend
p+guides(color = FALSE)
也可以使用scale_xx.函数去掉特定的legend
# Remove legend for the point shape p+scale_shape(guide=FALSE) # Remove legend for size p +scale_size(guide=FALSE) # Remove legend for color p + scale_color_manual(values=c('#999999','#E69F00','#56B4E9'), guide=FALSE)
通过以上参数的设置即完成对所绘制图形的legend的细节修改,得到自己所需要的图形。