2023-10-09 | ggplot2绘图
2023-10-08 本文已影响0人
千万别加香菜
1.绘图函数
geom_line #折线图
geom_point #散点图
geom_bar #条形图
geom_boxplot #箱型图
geom_jitter #抖动点
geom_violin #小提琴图
geom_density #密度图
geom_histogram #直方图
散点图
ggplot(data,aes(x,y,
fill,color,group))+
geom_point(size, stroke, alpha, shape)
# shape 形状,1-25可选,20以上可设置填充和边框
# size 点的大小,倍数
# stroke 调整轮廓粗细
# alpha 透明度,一般是填充色透明度
条形图
ggplot(data,aes(x,y,
fill,color,group))+
geom_bar(stat='identity', position='stack', width)
#stat 默认为count,一般指定indetity
#position 位置调整,stack为堆叠,dodge为并行摆放,fill为按比例堆叠
#width 条带宽度
2.图形调整参数
# 调整颜色、填充色和形状
scale_fill_manual(values=)
scale_color_manual(values=)
scale_shape_manual(values=)
scale_color_gradient(low = "SpringGreen", high = "OrangeRed") # 设置连续色,2种
library(RColorBrewer)
m_col = brewer.pal(9,"Set1")
scale_color_gradientn(colors=m_cols) # 设置连续色,N种
# 轴标签、图例调整
scale_x_discrete(limits = unique(data$Source1))+ # 固定X轴出现顺序和读入表格一致
scale_y_continuous(labels=percent) # y轴改为百分比形式
scale_x_continuous(expand=c(0.02,0),breaks = c(seq(0,29, by=2))) # 设置X轴标签为0,29间隔为2
theme(axis.text = element_text(face="bold", angle=45, hjust=1)) # 加粗、旋转XY标签,可用axis.text.x单独设置
labs(x="", y=" ") # 设置XY轴标签
theme(lengend.position="none") # 去除/修改图例位置,top,right,left,bottom等可用
theme(lengend.position=c(0.5,0.5)) # 调整图例位置
guides(fill=guide_legend(title=NULL, byrow=F)) # 去除图例
guides(col=F) # 去除图例
theme(legend.title=element_blank()) # 去图例标题
theme(legend.title=element_title()) # 修改图例标题
# 添加XY轴相应位置虚线
geom_hline(yintercept = 0.4, linetype = "dashed", color = "black")
geom_vline(xintercept = 0.17, linetype = "dashed", color = "black")
# 主题调整
默认主题
theme_classic() # 去除灰色背景和线,但只有左下边框
theme_bw() # 去除灰色背景,有所有边框
library(ggthemes)
theme_few() # 去除灰色背景和线,有全部边框
theme_base() # 去除灰色背景和线,有全部边框,且放大XY轴标签
theme_minimal() # 去除灰色背景,只有网格线和图形
坐标轴截断
library(ggbreak)
scale_y_break(c(100000,250000), space=0.2, scales=1, expand=c(0,0)) # 设置Y轴(100000,250000)位置截断,scales调整截断后比例
scale_x_break(c(100000,250000), space=0.2, scales=1, expand=c(0,0)) # X轴同理
拼图
library(ggpubr)
p <- ggarrange(ggarrange(p1, p2,ncol = 2, labels = c("a", "b"),widths = c(0.6,0.4)),
ggarrange(p3, p4, p5,ncol = 3, labels = c("c", "d","e"),widths=c(0.35,0.35,0.3)),
nrow = 2, heights = c(0.4,0.6))
p
# ncol 该层分为几格
# nrow 分为几层
# heights 每层所占比例, 总和=1
# labels 每张图的图标
# widths 每格占比,总和=1