You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot坐标轴标题中使用Font Awesome图标?尝试htmltools无效

在ggplot坐标轴标题中使用Font Awesome图标

你之前的方法失效是因为ggplot默认的文本元素不支持HTML渲染——htmltools::HTML()和Shiny的icon()生成的是HTML代码,无法被ggplot的静态图形解析。要实现这个需求,推荐用ggtext包,它能让ggplot支持Markdown/HTML内容渲染,包括Font Awesome图标。

具体步骤:

  1. 安装并加载ggtext包(如果没装过的话)
  2. 在坐标轴标题中直接使用Font Awesome的HTML标签,或者用icon()生成图标后转成字符串
  3. 修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:43:22