ggplot标题部分斜体并换行显示的实现方法咨询
解决方案
一、保留mdthemes,实现标题换行
mdthemes兼容HTML格式,直接用<br>标签替代\n即可实现换行,修改后的代码如下:
library(ggplot2) library(mdthemes) data(iris) p <- ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot(show.legend=FALSE, outlier.shape = NA, aes(fill = Species), alpha = 0.8) + labs(title ="Sepal length (cm) of *setosa, versicolor, virginica* <br> exposed to different treatments") + theme_classic() + theme(axis.title = element_text(face="bold"), text = element_text(family = "serif", size = 12)) p + md_theme_classic()
二、不依赖mdthemes,实现局部斜体+换行
如果不想使用mdthemes,有两种实用的替代方案:
1. 使用ggplot原生expression语法
通过italic()函数设置斜体,换行用\n,注意文本中的空格需要用~连接:
library(ggplot2) data(iris) p <- ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot(show.legend=FALSE, outlier.shape = NA, aes(fill = Species), alpha = 0.8) + labs(title = expression(Sepal~length~(cm)~of~italic(setosa, versicolor, virginica)~"\n"~exposed~to~different~treatments)) + theme_classic() + theme(axis.title = element_text(face="bold"), text = element_text(family = "serif", size = 12)) p
2. 使用ggtext包
ggtext支持解析markdown和HTML格式,只需将标题元素设置为element_markdown(),换行同样用<br>:
library(ggplot2) library(ggtext) data(iris) p <- ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot(show.legend=FALSE, outlier.shape = NA, aes(fill = Species), alpha = 0.8) + labs(title ="Sepal length (cm) of *setosa, versicolor, virginica* <br> exposed to different treatments") + theme_classic() + theme(axis.title = element_text(face="bold"), text = element_text(family = "serif", size = 12), plot.title = element_markdown()) # 开启markdown解析 p
内容的提问来源于stack exchange,提问作者arnaudm
相关产品推荐
相关产品推荐

