当前位置:网站首页>如何在分面中添加数学表达式标签?
如何在分面中添加数学表达式标签?
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()
此时绘制出来的结果如下:

边栏推荐
- 影像信息提取DEM
- 为什么数据需要序列化
- (Popular Science) What is Fractional NFT (Fractional NFT)
- php字符串如何去除第一个字符
- 【HMS core】【FAQ】push kit、WisePlay DRM、Location Kit、Health Kit、3D Modeling Kit、SignPal Kit典型问题合集4
- 科研中一些常用软件清单
- 481-82(105、24、82、34、153)
- Huawei ADS reports an error when obtaining conversion tracking parameters: getInstallReferrer IOException: getInstallReferrer not found installreferrer
- flask获取post请求参数
- AI遮天传 DL-CNN
猜你喜欢

ECCV2022 | FPN错位对齐,实现高效半监督目标检测 (PseCo)

【AGC】Open Test Example

配置Path环境变量

一文读懂Elephant Swap,为何为ePLATO带来如此高的溢价?

RobotStudio实现喷漆、打磨等功能(曲面路径生成与仿真)

Why is there no data reported when the application is connected to Huawei Analytics in the application debugging mode?

php如何查询字符串出现位置

【AGC】开放式测试示例

应用接入华为分析在应用调试模式下为何没有数据上报?

PMP每日一练 | 考试不迷路-7.30(包含敏捷+多选)
随机推荐
Google engineer "code completion" tool; "Transformers NLP" accompanying book code; FastAPI development template; PyTorch model acceleration tool; cutting-edge papers | ShowMeAI News Daily
Golang分布式应用定时任务如何实现
【重磅来袭】教你如何在RGBD三维重建中获取高质量模型纹理
华为ADS获取转化跟踪参数报错:getInstallReferrer IOException: getInstallReferrer not found installreferrer
RISC-V calling conventions
配置Path环境变量
tiup list
Introduction to golang image processing library image
Example of video switching playback (video switching example) code
服务器装好系统的电脑怎么分区
经典实例分割模型Mask RCNN原理与测试
【AGC】Open Test Example
Delayed message queue
Nature Microbiology综述:聚焦藻际--浮游植物和细菌互作的生态界面
[Cloud Native] Service Industry Case - Solutions for Unpredictable Concurrency Scenarios
When the vite multi-page application refreshes the page, it will not be in the current route and will return to the root route
PMP每日一练 | 考试不迷路-7.30(包含敏捷+多选)
MySql 和 PostgreSQL 数据库 根据一张表update另一张表数据
【AGC】开放式测试示例
(Popular Science) What is Fractional NFT (Fractional NFT)