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

news/2025/2/25 7:35:44/

目录

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

图例调整

字体类型设置

颜色相关

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)


http://www.ppmy.cn/news/1574799.html

相关文章

C++跨平台开发:策略与实践在软件开发领域

在软件开发领域&#xff0c;跨平台能力意味着一个应用程序可以在不同的操作系统上运行&#xff0c;无需针对每个平台单独编写代码。C作为一种强大的编程语言&#xff0c;因其高效性和灵活性&#xff0c;在跨平台开发领域有着广泛的应用。本文将探讨C跨平台开发的关键策略与实践…

AutoGen :打造专属智能体 (Custom Agents)

👉👉👉本人承接各类AI相关应用开发项目(包括但不限于大模型微调、RAG、AI智能体、NLP、机器学习算法、运筹优化算法、数据分析EDA等) !!!👉👉👉 有意愿请私信!!!AutoGen 的 AgentChat 模块为我们提供了内置预设的智能体,它们在不同场景下能展现出各种能力。 但是,…

独立开发者之Google Analytics使用教程

Google Analytics&#xff08;GA&#xff09;是Google提供的一款免费的网络分析服务&#xff0c;用于追踪和报告网站流量。以下是独立开发者如何使用Google Analytics的详细教程&#xff1a; 1. 创建Google Analytics账户 注册Google账户&#xff1a;如果你还没有Google账户&…

python 网络安全巡检

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 好几天没更因为寒假放假回家放松了几天 嘿嘿 今天继续开始启动学习模式。 python数据库编程 Python DB API访问数据库流程 Python DB API包含的内容 什么是…

树莓集团数字影像产业园,开启未来影像新生态大门

在影像技术飞速发展的时代&#xff0c;树莓集团紧跟潮流&#xff0c;强势打造数字影像产业园&#xff0c;为未来影像新生态的构建开启了大门。树莓集团数字影像产业园汇聚了数字影像领域的前沿技术与多元业态。 从影视制作、动画设计到虚拟现实&#xff08;VR&#xff09;、增…

深入了解 MySQL:从基础到高级特性

引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启…

javaweb-vue3基础

响应式 在 Vue 3 的中&#xff0c;ref() 和 reactive() 都是用来创建响应式数据的&#xff0c;但它们的使用方式和适用场景不同。 1. ref()&#xff1a;适用于基本类型 ref() 适用于基本类型&#xff08;如字符串、数字、布尔值&#xff09;&#xff0c;也可以用于对象&…

微软将OpenAI的野心外包给软银?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…