如何在ggplot坐标轴标题中使用Font Awesome图标?尝试htmltools无效
在ggplot坐标轴标题中使用Font Awesome图标
你之前的方法失效是因为ggplot默认的文本元素不支持HTML渲染——htmltools::HTML()和Shiny的icon()生成的是HTML代码,无法被ggplot的静态图形解析。要实现这个需求,推荐用ggtext包,它能让ggplot支持Markdown/HTML内容渲染,包括Font Awesome图标。
具体步骤:
- 安装并加载
ggtext包(如果没装过的话) - 在坐标轴标题中直接使用Font Awesome的HTML标签,或者用
icon()生成图标后转成字符串 - 修改ggplot主题,将对应坐标轴标题的元素设置为
element_markdown(),启用HTML解析
完整可运行代码:
library(shiny) library(tidyverse) library(ggtext) ui <- fluidPage( plotOutput("example") ) server <- function(input, output) { output$example <- renderPlot({ mtcars %>% ggplot(aes(x = wt, y = mpg, color = cyl)) + geom_point() + labs( # 两种写法任选其一: # 写法1:直接用Font Awesome的HTML标签 x = "WT <i class='fa-solid fa-arrow-right'></i>", # 写法2:用Shiny的icon()生成后转成字符串 # x = paste0("WT ", as.character(icon("arrow-right"))) ) + theme( # 启用坐标轴标题的Markdown/HTML渲染 axis.title.x = element_markdown() ) }) } shinyApp(ui = ui, server = server)
注意事项:
- 确保Font Awesome的图标类名正确,Font Awesome 6+版本中,实心图标需要加上
fa-solid前缀(比如fa-solid fa-arrow-right),空心图标用fa-regular - 如果是在纯ggplot环境(非Shiny)中使用,需要手动添加Font Awesome的依赖:
ggtext::fontawesome_html_dependency(),否则图标无法显示
内容的提问来源于stack exchange,提问作者anorlondo
相关产品推荐
相关产品推荐

