31 0

[图行天下] ggplot图片主题 复用与保存 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2018-9-27
最后登录
2018-9-27

楼主
小二的逗逼生活 发表于 2025-12-2 19:33:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

图片主题、复用与保存

1. 主题函数(theme)

在 ggplot2 中,theme() 函数是控制图表非数据部分外观的核心工具。它并不影响图形的数据映射内容——例如点、线、柱状图的位置、大小或颜色(这些由 aes() 和几何对象如 geom_point() 等决定),而是专注于调整图表的“装饰性”元素。

这类元素包括:标题字体样式、坐标轴标签格式、图例显示位置、背景填充色、网格线类型等。通过使用 theme(),可以实现图表风格的高度定制化和整体一致性。

常用的主题元素设置函数包括:

  • element_text():用于设定文本属性,如字体族、字号、颜色、是否加粗或斜体、对齐方式等;
  • element_line():用于定义线条特征,比如颜色、宽度、线型(如实线 solid 或虚线 dashed);
  • element_rect():用于配置矩形区域的样式,如面板背景的填充色、边框颜色及粗细;
  • element_blank():用于隐藏指定元素,例如设置 panel.grid = element_blank() 可移除所有网格线。
theme()

2. 图表的复用机制

ggplot2 的设计核心之一是“图层叠加”理念。一个图表本质上是一个可编辑、可扩展的 ggplot 类对象。这意味着我们可以将基础绘图结构(如数据映射和主要几何图层)保存为变量,后续在此基础上不断添加新图层或修改主题、标签等内容,从而实现高效复用。

这种做法避免了重复编写相同的基础代码,提升了代码的模块化程度与可维护性。例如,创建一个包含数据和基本几何图形的初始图后,可以在不同场景下分别应用不同的主题风格或坐标系设置,快速生成多个版本的可视化结果。

aes()
geom_*

R语言入门课程介绍

1. 课程概述

本课程名为“R语言入门课”,旨在为生物信息学初学者提供系统、规范且具有形成性的教学内容。我们注意到,在前期活动中,许多同学表达了希望获得线下集中学习机会以及针对性指导与答疑的需求。为此,我们推出了此次系统化的 R 语言培训课程。

课程共分为四个模块:“R介绍”、“R语言数据对象”、“基本数据管理”和“图形初级(ggplot2)”,总计12节课,总时长约5.5小时。课程视频已全部剪辑完成,便于未能参与直播的同学随时加入学习。同时,我们将持续建立学习群组,用于发布课程资料并开展内容答疑。

我们坚持不做“生信快餐”,而是致力于帮助学习者打下扎实的基础。R语言的核心优势在于其强大的数据处理与可视化能力,这正是生物信息分析不可或缺的技能。

2. R语言简介

R 是一种专为统计计算、数据分析和可视化设计的编程语言,广泛应用于学术研究与工业领域。它具备开源免费、生态丰富、功能强大等特点,尤其在生物信息学中占据重要地位。

诸如 RNA-Seq 差异表达分析常用的 DESeq2、edgeR 等主流工具均基于 R 开发,引用次数高达数万次。此外,我们制作的单细胞测序分析教程也几乎完全依托于 R 环境。

尽管部分学员希望跳过 R 直接学习单细胞分析技术,但我们始终强调:“不积跬步,无以至千里”。缺乏 R 语言基础,后续深入分析将难以为继。因此,欢迎各位积极参与本次课程,夯实基础,稳步前行。

3. 学习资源与课程目录

为配合学习,我们准备了完整的配套资料,包括学习手册、练习题等,帮助大家边看视频边动手实践。

课程大纲如下:

  1. R介绍
    • 1.1 R 下载与安装
    • 1.1.1 RStudio 使用入门
    • 1.1.2 R 的帮助系统
    • 1.1.3 工作区管理相关函数
    • 1.2 包(Packages)
    • 1.2.1 包的基本操作函数
    • 1.2.2 利用包处理大型数据集的示例演示
  2. R语言数据对象
    • 2.1 数据集的基本概念
    • 2.2 数据结构详解
    • 2.2.1 向量 (vector)
    • 2.2.2 矩阵 (matrix)
    • 2.2.3 数组 (array)
    • 2.2.4 数据框 (data frame)
    • 2.2.5 因子 (factor)
    • 2.2.6 列表 (list)
    • 2.3 数据导入方法
    • 2.3.1 从分隔符文本文件读取数据
    • 2.3.2 导入 Excel 文件数据
  3. 基本数据管理
    • 3.1 新变量的创建
    • 3.2 变量重编码(recoding)
    • 3.3 变量重命名
    • 3.4 缺失值(NA)处理
    • 3.5 数据类型的判断与转换
    • 3.6 数据排序
    • 3.7 数据集合并
    • 3.8 变量选取
    • 3.9 观测值选取
    • 3.10 使用 subset() 函数筛选行或列
    • 3.11 删除特定变量
    • 3.12 dplyr 包简介
    • 3.13 利用管道操作符 %>% 连接多条命令
  4. 图形初级(ggplot2)
    • 4.1 使用 ggplot2 绘制图形
    • 4.1.1 ggplot() 函数基础
    • 4.1.2 geom_*() 几何对象函数
    • 4.1.3 分组机制
    • 4.1.4 标度(Scales)设置
    • 4.1.5 刻面(Faceting)布局
    • 4.1.6 添加标签(Labels)
    • 4.1.7 主题(Themes)定制
    • 4.2 ggplot2 高级细节
    • 4.2.1 数据放置与映射选项的深入解析

代码与实例展示

本次课程涉及的所有代码均已整理归档,方便学员对照学习与实践操作。

###### 4.1.5 theme主题与图片的复用、保存 ######  
#theme_主题可以控制背景、颜色、字体、网格线、图例位置、及其他与数据无关的图形特征。
ggplot(data = CPS85,mapping = aes(x=exper,y=wage))+
  geom_point(color="blue",alpha=0.5,size=1.5)
# theme_bw()函数将灰色背景变为白色
ggplot(data = CPS85,mapping = aes(x=exper,y=wage))+
  geom_point(color="blue",alpha=0.5,size=1.5)+
  theme_bw()
ggplot(data = CPS85,mapping = aes(x=exper,y=wage))+
  geom_point(color="blue",alpha=0.5,size=1.5)+
  theme_grey()
ggplot(data = CPS85,mapping = aes(x=exper,y=wage))+
  geom_point(color="blue",alpha=0.5,size=1.5)+
  theme_dark()
ggplot(data = CPS85,mapping = aes(x=exper,y=wage))+
  geom_point(color="blue",alpha=0.5,size=1.5)+
  theme_light()
#前面用到的theme_bw()就是将背景颜色设置为白色,
# 这里我们展示一个简约主题(**theme_minimal()**):
ggplot(data = CPS85,mapping = aes(x=exper,y=wage))+
  geom_point(alpha=0.5)+
  theme_minimal()
# 基础图形(你的原始示例)
p_base <- ggplot(data = CPS85, 
                 mapping = aes(x = exper, y = wage, 
                               color = sex, shape = sex, linetype = sex)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "lm", se = FALSE) +
  theme_minimal() +
  labs(title = "工作经验与工资关系", 
       x = "工作经验(年)", 
       y = "工资(美元/小时)",
       color = "性别", shape = "性别", linetype = "性别")
print(p_base)
# 1. 调整标题和轴标签样式
p1 <- p_base +
  theme(
    plot.title = element_text(size = 16, face = "bold", 
                              color = "green", hjust = 0.5),
    axis.title.x = element_text(size = 12, color = "orange", face = "italic"),
    axis.title.y = element_text(size = 12, color = "orange", face = "italic")
  )
print(p1)
# 2. 自定义刻度文本和网格线
p2 <- p1 +
  theme(
    axis.text.x = element_text(size = 10, color = "orange"),
    axis.text.y = element_text(size = 10, color = "orange"),
    panel.grid.major = element_line(color = "purple", linewidth = 0.5),# 主网格线
    panel.grid.minor = element_line(color = "red", linewidth = 0.3, 
                                    linetype = "dashed")# 次网格线
  )
print(p2)
# 3. 调整图例样式和位置
p3 <- p2 +
  theme(
    legend.position = "right",  # "right" "bottom" "left" "top" "none" 
    legend.box = "vertical",# "horizontal",   # 图例水平排列, 垂直排列"vertical" 
    legend.key.width = unit(2, "cm")  # 增加图例符号宽度
  )
print(p3)
# 4. 添加绘图区边框和背景
p4 <- p3 +
  theme(
    panel.border = element_rect(color = "white", fill = NA, linewidth = 1),
    plot.background = element_rect(fill = "grey", color = NA),
    plot.margin = margin(t = 15, r = 15, b = 15, l = 15, unit = "pt")  # 调整边距
  )
print(p4)
### 4.2.3 保存图形 ###
#1)直接在viewer中点击处理
#2)**ggsave()**函数
ggsave(file="mygragh.png",plot = p4,width = 5,height = 4,dpi = 300)# dots per inch
#这里的file=是设置图片名和格式,plot=是针对哪张图保存,宽度和高度单位是英寸
# 3) pdf函数
pdf(file="mygragh.pdf",width = 5,height = 4)
print(p4)
dev.off()
tiff(file="mygragh.tiff",width = 5,height = 4)
print(p4)
dev.off()
png(file="mygragh.png",width = 5,height = 4)
print(p4)
dev.off()
svg()
jpeg()
#图片格式有以下几种:pdf,jpeg,tiff,png,svg,

4.2.2 图形的对象化应用

在进行图形处理时,可以将图形以对象的形式进行调用和操作。这种方式不仅提升了图形的可管理性,也增强了程序的模块化特性。通过将图形封装为独立的对象,用户可以在不同的场景中重复使用,同时便于属性的动态修改与行为控制。

4.2.3 图形的保存方法

完成图形设计后,保存操作是不可或缺的一环。系统通常支持多种格式的导出与存储,确保图形能够在不同平台或软件中被顺利读取。合理选择保存路径与文件格式,有助于后续的调用与共享,提升整体工作效率。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:gplot plot GPL Packages ggplot2

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 13:19