当前位置:网站首页>如何在分面中添加数学表达式标签?
如何在分面中添加数学表达式标签?
2022-07-30 15:29:00 【庄闪闪】
简介
最近自己论文中需要绘制不同公式得到结果的分面图,并且在标签中给出表达式。对于这样的需求,一时半会想不出来。经过一顿搜索,得到了以下不错的解决方案。
关于分面的基础教程可见以前写的推文:R可视乎|分面一页多图。拓展的技巧可见:xxx。老俊俊的生信笔记也给出了几篇不错的分面技巧介绍:使用 jjAnno 对分面添加注释;ggplot2 如何在不同分面添加不同文字;ggplot2 如何在不同分面添加不同图形。
构建模拟数据
老样子,给出模拟数据,读者根据自己数据进行转换即可。
# 相关包
library(ggplot2)
library(grid)
mydf <- data.frame(letter = factor(rep(c("A", "B", "C", "D"), each = 20)), x = rnorm(80), y = rnorm(80))
head(mydf)
基本绘图
简单绘制出数据 x,y 之间的散点图和拟合曲线,并根据分类数据 letter 进行分面。
ggplot(mydf, aes(x = x, y = y)) +
geom_smooth(method = "lm") +
geom_point() +
facet_wrap(~ letter)
设置表达式标签
使用 expression()
函数定义表达式标签,存储到 f_names
。并定义 f_labeller
提取 f_names
中的值。之后在分面中使用参数 labeller = f_labeller
。
当然,也可以使用
latex2exp
包中的TeX()
, 用类似 LeTeX 语句写表达式。例如:TeX("$\\alpha_2$")
。
f_names <- list('A' = expression(paste(alpha[2])), 'B' = expression(Gamma(3,4)), 'C' = expression(paste(y = beta[0] + beta[1]*x[1])), 'D' = expression(delta))
f_labeller <- function(variable, value){return(f_names[value])}
ggplot(mydf, aes(x = x, y = y)) +
geom_smooth(method = "lm") +
geom_point() +
facet_wrap(~ letter, labeller = f_labeller)
修改主题
ggplot(mydf, aes(x = x, y = y)) +
geom_smooth(method = "lm",color = "#e99e9c",fill = "#98c0d7") +
geom_point(color = "gray60") +
facet_wrap(~ letter, labeller = f_labeller,scales = "free") +
theme_bw() + ylab("Value") + xlab("Time") + #主题设置
theme(panel.grid = element_blank(),
strip.background = element_blank())
添加中文标签
加入想要添加中文标签,只需修改:
# 设置标签
f_names <- list('A' = expression(paste(alpha[2])), 'B' = expression(Gamma(3,4)), 'C' = expression(paste(y = beta[0] + beta[1]*x[1])), 'D' = expression(delta))
f_names <- list('A' = "庄闪闪", 'B' = "庄亮亮",
'C' = "庄晶晶", 'D' = "庄暗暗")
如果存在中文字体乱码,请参考这篇推文:R问题|解决PDF导出字体无法显示的问题。即在文中前面加入以下代码:
library(showtext)
showtext.auto()
此时绘制出来的结果如下:
边栏推荐
- php如何去除字符串最后一位字符
- 【HMS core】【FAQ】push kit, WisePlay DRM, Location Kit, Health Kit, 3D Modeling Kit, SignPal Kit Typical Questions Collection 4
- 谷歌工程师『代码补全』工具;『Transformers NLP』随书代码;FastAPI开发模板;PyTorch模型加速工具;前沿论文 | ShowMeAI资讯日报
- 哨兵
- 深度学习遇到报错Bug解决方法(不定时更新)
- Data Analysis Tools - DDL operations & DML operations in HQL
- Google engineer "code completion" tool; "Transformers NLP" accompanying book code; FastAPI development template; PyTorch model acceleration tool; cutting-edge papers | ShowMeAI News Daily
- SEATA distributed transaction
- 【嵌入式】适用于Cortex-M3(STM32F10x)的IQmath库
- ECCV2022 | FPN错位对齐,实现高效半监督目标检测 (PseCo)
猜你喜欢
【HMS core】【FAQ】push kit、分析服务、视频编辑服务典型问题合集3
rhce笔记1
481-82(105、24、82、34、153)
RISC-V调用惯例
Why is there no data reported when the application is connected to Huawei Analytics in the application debugging mode?
Example of video switching playback (video switching example) code
481-82 (105, 24, 82, 34, 153),
AL遮天传 DL-深度学习模型的训练技巧
Classes and Objects (Part 2)
Flask之路由(app.route)详解
随机推荐
经典实例分割模型Mask RCNN原理与测试
工具| execsnoop 短时进程追踪工具
使用 TiUP 命令管理组件
CAD几个优化设置
xxl-job源码解析(技术分享)
谷歌工程师『代码补全』工具;『Transformers NLP』随书代码;FastAPI开发模板;PyTorch模型加速工具;前沿论文 | ShowMeAI资讯日报
TiDB 工具适用场景
近段时间的学习碎片整理(24)
R中按照数字大小进行排序
golang modules initialization project
EST综述:eDNA的多种状态以及在水环境中持久性的认知
服务器装好系统的电脑怎么分区
针对 MySQL/InnoDB 刷盘调优
Data Analysis Tools - DDL operations & DML operations in HQL
【喂到嘴边了的模块】准备徒手撸GUI?用Arm-2D三分钟就够了
php如何去除字符串最后一位字符
科研中一些常用软件清单
【AGC】开放式测试示例
How to do a good job in technology selection
Why is there no data reported when the application is connected to Huawei Analytics in the application debugging mode?