ggplot2轴文本格式不适用于指数

问题描述

将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创建