我对 R 比较陌生,作为一名化学家,我需要经常使用下标。特别是,例如在这张图中:
我使用的代码如下:
ggline(my_data, x = "ATPS", y = "PRYBSA", color = "Pretreatment",
add = "mean_sd", size=1, ylim=c(0,105),
palette = c("#00AFBB", "#E7B800"), legend="right",
ylab ="Protein recovery yield / %",error.plot = "errorbar") + theme(axis.text=element_text(size=20), axis.title=element_text(size=24,face="bold"), legend.title=element_text(size=24),legend.text=element_text(size=22))
TukeyHSD(prybsa.aov, which = "ATPS")
变量“ATPS”有三个水平:Bet:2LA/K2HPO4, ChCl:2Urea/K2HPO4 和 ChCl:2Urea/K3PO4,但我希望它们以下标出现 Bet:2LA/K2HPO4, ChCl :2Urea/K2HPO4 和 ChCl:2Urea/K3PO4.
实现您想要的结果的一个选择是使用
recode
符号添加下标?plotmath
您的标签。然后使用例如scales::label_parse
在 scale_x_discrete
解析数学表达式:
使用一些虚假的随机示例数据:
set.seed(123)
my_data <- data.frame(
ATPS = rep(c("Bet:2LA/K2HPO4", "ChCl:2Urea/K2HPO4", "ChCl:2Urea/K3PO4"), each = 2),
Pretreatment = c("Mortar", "None"),
PRYBSA = runif(10 * 6, 0, 100)
)
library(ggpubr)
#> Loading required package: ggplot2
my_data$ATPS <- dplyr::recode(
my_data$ATPS,
"Bet:2LA/K2HPO4" = "Bet:2*LA/K[2]*HPO[4]",
"ChCl:2Urea/K2HPO4" = "ChCl:2*Urea/K[2]*HPO[4]",
"ChCl:2Urea/K3PO4" = "ChCl:2*Urea/K[3]*PO[4]"
)
ggline(my_data,
x = "ATPS", y = "PRYBSA", color = "Pretreatment",
add = "mean_sd", size = 1, ylim = c(0, 105),
palette = c("#00AFBB", "#E7B800"),
legend = "right",
ylab = "Protein recovery yield / %",
error.plot = "errorbar"
) +
scale_x_discrete(labels = scales::label_parse())
第二种也许更轻量级的方法是使用Unicode下标:
my_data$ATPS <- dplyr::recode(
my_data$ATPS,
"Bet:2LA/K2HPO4" = "Bet:2LA/K\u2082HPO\u2084",
"ChCl:2Urea/K2HPO4" = "ChCl:2Urea/K\u2082HPO\u2084",
"ChCl:2Urea/K3PO4" = "ChCl:2Urea/K\u2083*PO\u2084"
)
ggline(my_data,
x = "ATPS", y = "PRYBSA", color = "Pretreatment",
add = "mean_sd", size = 1, ylim = c(0, 105),
palette = c("#00AFBB", "#E7B800"),
legend = "right",
ylab = "Protein recovery yield / %",
error.plot = "errorbar"
)