r - 在轴标签中混合字体样式ggplot2

标签 r ggplot2

我想通过将一些文本设为粗体来设置 ggplot2 轴标签的样式。理想情况下,我也想控制字体大小。这一切都可能吗?这是我正在尝试做的示例:

qplot(x = x,  y = y, data = data.frame(x = rnorm(10), y = rnorm(10))) + 
labs(x = "14pt Bold text \n12pt normal text")

因此,我想要 14pt 粗体字体,而不是 14pt 粗体文本,对于 12pt 普通文本,我想要 12pt 普通文本。

我在谷歌上搜索了示例,我发现的只是改变所有标签外观的方法,或者使用plotmath表达式,奇怪的是这对ggplot2没有影响,即做 labs(x=expression("bold(Bold text)")) 没有效果。

更新

一如既往,我试图问一个过于笼统的问题。我想要实现的完整示例还涉及使用自定义字体。我使用的字体是AvenirNextLTPro ,我想要的外观如下:

library(showtext)
library(ggplot2)

font.add("AvenirNextLTPro", 
         regular = "AvenirNextLTPro-Regular.otf", 
         bold="AvenirNextLTPro-Demi.otf",    
         italic = "AvenirNextLTPro-It.otf", 
         bolditalic = "AvenirNextLTPro-DemiIt.otf")
showtext.auto() 

ggplot(data = data.frame(x = rnorm(10), y = rnorm(10)), aes(x = x, y = y)) + 
    geom_point() + 
    labs(x = "14pt Bold text \n12pt normal text", 
         y = "14 pt Bold text\n\n 12pt\nnormal\ntext") + 
    theme(axis.title.y = element_text(angle = 0, hjust = 1, family = "AvenirNextLTPro"), axis.title.x = element_text(family = "AvenirNextLTPro"))

请注意,要实现此功能,您需要安装字体,即它们应该对 font.files() 可见。对于 Mac OS X,这可以通过打开字体应用程序并添加下载的字体来实现。

最佳答案

皮埃尔的评论中的答案是以更通用的方式处理这个问题的一个非常好的方法。但是,使用新的 caption 绘图/主题元素(安装 ggplot2 的 github 版本,直到本月晚些时候发布),如果您想要的只是您所描述的内容,您可以进行快速破解。

ggplot(data.frame(x=rnorm(10), y=rnorm(10))) +
  geom_point(aes(x, y)) +
  labs(x="14pt Bold text", caption="12pt normal text") +
  theme(axis.title.x=element_text(size=14, face="bold", hjust=0.5)) +
  theme(plot.caption=element_text(size=12, face="plain", hjust=0.5))

enter image description here

另外,请尽量避免使用 qplot() 这个诱人的快捷方式。我花了一些时间从绝大多数示例中删除了它,并且包作者本人并不鼓励使用它。

更新

这是一个天哪可怕的黑客,但是......

ggplot(data.frame(x=rnorm(10), y=rnorm(10))) +
  geom_point(aes(x, y)) +
  labs(x="14pt Bold text", caption="12pt normal text") +
  theme(axis.title.x=element_text(size=14, face="bold", hjust=0.5)) +
  theme(plot.caption=element_text(size=12, face="plain", hjust=0.5)) -> gg

grid.arrange(gg, left=textGrob("Title", rot=90, hjust=-0.3,
                               gp=gpar(fontsize=14, fontface="bold")))

enter image description here

会在 y 轴上得到同样的结果。如果需要,您可以稍微修改间距,但毫无疑问您需要调整任何“生产”/发布图的 hjust

关于r - 在轴标签中混合字体样式ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39832631/

相关文章:

r - 带有 ggplot2 for R 的多色标题

r - 模块中的 Xaringan 演示

r - ggplot2:带有文本、下标/上标和计算值的注释

r - ggplot2 geom_area 边缘不垂直

r - 如何使用 ggplot2 在轴上仅显示整数值

r - 添加重复序列的分组指示符

r - 如何使用来自 csv 文件的实际观测值正确注释堆栈条形图?

r - ggplot直方图的难点

r - 如何绘制具有显着水平的箱线图?

r - 使用grid.arrange时出现错误 "Breaks and labels are different lengths"