【R语言】ggplot2绘图常用操作

目录

坐标轴以及标签的相关主题

图例调整

字体类型设置

颜色相关

ggplot2如何添加带箭头的坐标轴?

标题相关主题调整

修改点图中点的大小

如何使得点的大小根据变量取值的大小来改变?

柱状图和条形图


坐标轴以及标签的相关主题

theme(

增大X轴标签字体大小

axis.text.x = element_text(angle = 45, hjust = 1, face = "bold", size = 12),

增大Y轴标签字体大小,不旋转

axis.text.y = element_text(face = "bold", size = 12),

增大X轴标题字体大小

axis.title.x = element_text(face = "bold", size = 14),

增大Y轴标题字体大小

axis.title.y = element_text(face = "bold", size = 14) ,

axis.line.y = element_blank(),# 移除 y 轴线

#增大分面标签字体大小

strip.text = element_text(face = "bold",size = 14) ,

调整标题字体大小和加粗 plot.title = element_text(size = 16, face = "bold"),

#修改坐标轴刻度的代码,就是那个刻度的长度和宽度

axis.ticks.length.x = unit(0.2, 'cm'),

axis.ticks.length.y = unit(0.2, 'cm'),

axis.ticks = element_line(size = 1)

)

hjust = 1表示右对齐,0.5表示居中对齐,0表示左对齐。y轴也可以设置angle,如果 axis.title.y的angle被设置为90,y轴标题就竖着显示了

图例调整

图例,分面标签字体大小,x轴和y轴的标签位置,写在theme里面

#调整图例文本大小

legend.text = element_text(face = "bold",size = 20),

#调整图例标题大小

legend.title = element_text(face = "bold",size = 20),

#去除图例标题

legend.title = element_blank(),

legend.position = "top",#图例显示在上方

legend.direction = "vertical",#图例的方向为垂直。

legend.justification = c(1,0),#图例的右上角与图形的右上角对齐

调整分面行标签的文本大小

就是调PBS和LR strip.text.y = element_text(size = 14, face = "bold"),

调整分面列标签的文本大小

strip.text.x = element_text(size = 14, face = "bold"),

#调整x轴和y轴标签的位置

axis.title.x = element_text(vjust = 0.5, hjust = 0),

axis.title.y = element_text(vjust = 0.5, hjust = 0)

调整图例颜色块(也称为图例键)的形状和大小使用代码

guides( color = guide_legend( override.aes = list( size = 6, # 图例点大小 alpha = 1, # 图例不透明 shape = 16 # 图例形状统一为实心圆 ) ) )

设置背景板和绘图区域为白色,写在theme里面就行

plot.background = element_rect(fill = "white"), # 设置绘图区域背景颜色 panel.background = element_rect(fill = "white") , # 设置面板背景颜色 panel.grid = element_blank(), # 去除网格线 这个通常要运行 panel.border = element_blank(), # 去除面板边框 这个一般不会运行,没有边框更难看 axis.line.x = element_blank(),#不显示x轴坐标轴 axis.line.y= element_blank(),#不显示y轴坐标轴

注意所有的背景以及字体的调整都要放在同一个theme中,防止覆盖原来的theme

在theme外边加这两句可以翻转坐标轴

+coord_flip()+ RotatedAxis()

字体类型设置

ggplot设置全局字体,下面两个挑一个就行

theme( text = element_text(family = "Times New Roman")#设置全局字体为Times New Roman text = element_text(family = "Arial")#设置全局字体为Arial )

去除图例写+NoLegend()

去除坐标轴写+NoAxes()

在图上加一个黑色框写

theme(panel.border = element_rect(fill = NA,color = "black",size=1.5,linetype = "solid"))

在theme后面写上+coord_cartesian(clip = "off")默认情况下,当图形元素超出绘图区域时会被裁剪掉。当设置为

"off" 时,允许图形元素绘制在绘图区域之外,这样可以避免一些元素(如标签、注释等)因为超出绘图区域而被截断,确保所有需要显示的元素都能完整呈现。

颜色相关

ggplot2绘图的时候快速更换颜色可以使用

scale_fill_brewer(palette = "Set2")

用之前首先要library(RColorBrewer)

同时可以使用代码dput(brewer.pal(9, "Set1"))来把使用的颜色打印出来

col

ggplot2如何添加带箭头的坐标轴?

#添加开放式箭头 p2 <- p1+theme(

axis.line = element_line(arrow = arrow(length = unit(0.3, "cm")),linewidth=0.8))

#添加闭合式箭头 p3 <- p1+theme(axis.line = element_line(arrow = arrow(length = unit(0.2, "cm"),type="closed"),linewidth=0.8))

#添加双向箭头 p4 <- p1+theme(axis.line.x = element_line(arrow = arrow(length = unit(0.2, "cm"), type="closed",ends="both"),linewidth=0.8),

axis.line.y = element_line(arrow = arrow(length = unit(0.2, "cm"), type="closed"),linewidth=0.8))

高分文章中坐标轴没有箭头,都是直接一根线,坐标轴是线的代码是:

axis.line = element_line(color = "black", size = 0.5)

标题相关主题调整

把下面这句写到theme里面即可使主标题居中

plot.title = element_text(hjust = 0.5, face = "bold", size = 14)

重命名标题:使用labs,这个是独立于theme的,不是在theme里面写,而是用+连接,和theme是同级的

如何设置为空就可以删除对应的标题

p2 <- p2 + labs(x = "新的X轴标题", y = "新的Y轴标题",title = "主标题")

让点图中的点随着某个变量的取值而变化,比如随着logFC的绝对值变大,点也变大,实际上就是在aes中把size赋值为某个变量就行,一定要写到aes里面,aes即美学映射

p <- p + geom_point(aes(size = abs(avg_log2FC))) + scale_size_continuous(name = "Abs Log2FC", breaks = seq(0, max(abs(deg$avg_log2FC)), by = 1), range = c(1, 5)) # 根据需要调整范围

修改点图中点的大小

p1<-p1 + geom_point(size = 5)

只要图是一个点图同时是ggplot对象就可以这样来定点的大小,比如cellchat包中的netVisual_bubble函数绘制的就是一个ggplot类型的点图,那我们就可以把这个函数绘制的图存到变量p1里面,然后使用netVisual_bubble来修改所有点的大小为5

如何使得点的大小根据变量取值的大小来改变?

只需要在aes里面写size = 某变量,就可以根据指定变量的取值来决定点的大小

如果点的大小是通过某个变量的值来改变的,我们可以人为规定点的大小的范围,避免变量取值范围过大引起的点的形状大小差异过大,调整方法为:

p1

柱状图和条形图

geom_bar(stat = "identity", position = "dodge")生成分组柱状图

geom_bar(stat = "identity", position = "stack")生成堆叠柱状图

想让条形图变成冲积图只需要在画条形图的代码中加上

geom_stratum(aes(fill = Taxon),width = 0.6)+ geom_alluvium(aes(fill = Taxon), alpha = .5)

相关推荐
毕设源码-郭学长8 小时前
【开题答辩全过程】以 PHP茶叶同城配送网站的设计与实现为例,包含答辩的问题和答案
开发语言·php
数据要素X9 小时前
【大数据实战】如何从0到1构建用户画像系统(案例+数据仓库+Airflow调度)
大数据·数据仓库·数据治理·数据中台
JavaPub-rodert9 小时前
用 go-commons 打造更优雅的字符串处理工具
开发语言·后端·golang
Archie_IT10 小时前
嵌入式八股文篇——P1 关键字篇
c语言·开发语言·单片机·mcu·物联网·面试·职场和发展
workflower10 小时前
将图片中的图形转换为可编辑的 PPT 图形
java·开发语言·tomcat·powerpoint·个人开发·结对编程
TDengine (老段)10 小时前
TDengine 时序函数 DERIVATIVE 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)10 小时前
TDengine 时序函数 STATEDURATION 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
凯子坚持 c10 小时前
2025年大模型服务性能深度解析:从清华评测报告看蓝耘元生代MaaS平台的综合实力
大数据·数据库·人工智能
ftpeak10 小时前
《WebAssembly指南》第九章:WebAssembly 导入全局字符串常量
开发语言·rust·wasm
WLJT12312312310 小时前
中国建材网:重构建材行业生态的数字力量
大数据·人工智能