ggplot2中同一坐标轴标题内混合使用Arial与Symbol字体的实现方法
ggplot2中同一坐标轴标题内混合使用Arial与Symbol字体的实现方法
嗨,我完全get到你的需求啦——按照Nature的绘图规范,坐标轴标题里普通文字用Arial/Helvetica,希腊字母得用Symbol字体,还不想拆成两个文本元素手动拼接对吧?这其实可以通过ggplot支持的plotmath表达式来实现,不用额外加元素,一次搞定!
核心思路是:在坐标轴标题的表达式里,给需要用Symbol字体的部分(也就是这里的μ)单独指定字体家族,其他文本保持Arial即可。下面是修改后的完整代码,我标出来了关键改动的地方:
ggplot(aes( x = fct_inorder(Dose), y = fct_rev(fct_inorder(Tissue_type)), fill = viability, )) + geom_tile(color = "black") + # 关键改动1:用plotmath表达式指定混合字体 xlab(label = expression(Dose~of~AC484~(fontfamily("Symbol")*mu*M))) + ylab(label = "") + theme_void() + theme( axis.text.x = element_text( size = 3.59, angle = 45, hjust = 1.0, margin = margin(t = -11, b = 0), family = "Arial", color = "#000000", vjust = 0.75 ), axis.title.x = element_text( size = 3.59, # 关键改动2:基础字体设为Arial,表达式中指定的部分会覆盖这个设置 family = "Arial", color = "black", vjust = -3.5, margin = margin(t = 2, b = 5) ) )
给你解释一下代码里的细节:
expression():让ggplot解析里面的plotmath语法,支持局部字体指定~:在plotmath里代表空格,用来分隔单词fontfamily("Symbol")*mu:指定μ这个希腊字母用Symbol字体,*用来连接字符,确保字体设置只作用于后面的μ- 轴标题的基础字体设为Arial,这样除了指定Symbol的部分,其他文字都会用Arial显示
另外要注意,如果你的系统里Symbol字体的名称不是"Symbol"(比如部分Mac或Linux系统可能叫"SymbolMT"),可以用extrafont::fonts()命令查看已加载的字体列表,找到对应的名称替换进去就行。如果还没加载字体,记得先运行extrafont::loadfonts()哦。
备注:内容来源于stack exchange,提问作者Madeline
相关产品推荐
相关产品推荐

