问题描述
将ggplot的轴文本更改为某种表达式(在本例中为10 ^ .x)很容易。但是,转换文本后,它将失去粗体格式。
我想知道是否存在一种保留粗体格式但又具有如下所示的指数标签的方法。
library(ggplot2)
xxx <- data.frame(
x = c(-5,-4,-3),y = c(1,1,1)
)
ggplot(xxx,aes(x,y)) +
geom_point() +
scale_x_continuous(label = scales::label_math(expr = 10^.x)) +
theme_bw(base_size = 20) +
theme(axis.text = element_text(face = "bold"))
由reprex package(v0.3.0)于2020-08-31创建
解决方法
发布此帖子后,我解决了自己的问题。我从对this question的回答中改编了make_labels
函数。
技巧是将轴号粘贴为文本,然后在表达式中使用粗体(或斜体或其他)来控制格式。
library(ggplot2)
xxx <- data.frame(
x = c(-5,-4,-3),y = c(1,1,1)
)
exp_bold <- function(lab) {
do.call(
expression,lapply(paste(lab),function(x) bquote(bold("10"^.(x))))
)
}
ggplot(xxx,aes(x,y)) +
geom_point() +
scale_x_continuous(label = exp_bold) +
theme_bw(base_size = 20) +
theme(axis.text = element_text(face = "bold"))
由reprex package(v0.3.0)于2020-08-31创建