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

如何在R语言中结合geom_image使用SVG格式图片?

在ggplot中用ggimage加载SVG图片的解决方法

我想用ggimage包在ggplot图表里加图标和图片,现在能正常加载本地或在线的PNG图,但SVG格式的(比如指定的沙漏SVG)死活加载不出来,一开始试了geom_icon图层也不行。下面是我能跑通的PNG示例代码:

library("ggplot2")
library("ggimage")

mtcars %>% 
  mutate(am = factor(am)) %>% 
  group_by(am) %>% 
  summarise(avg_mpg = mean(mpg)) %>% 
  mutate(image = c("https://www.r-project.org/logo/Rlogo.png",
              "https://jeroenooms.github.io/images/frink.png")) %>% 
  ggplot(aes(x=factor(am), y=avg_mpg)) + 
  geom_col(width = 0.5) + 
  geom_image(aes(image=image), size=.2) + 
  theme_minimal()

效果图:
ggplot加载PNG示例效果


解决方法

方法1:用svgparser转SVG为栅格对象

ggimage的geom_image不直接支持SVG,我们可以先拿svgparser把SVG解析成栅格对象,再传给geom_image:

library("ggplot2")
library("ggimage")
library("svgparser")
library("dplyr")

# 解析目标SVG为栅格对象
hourglass_svg <- svgparser::read_svg("https://raw.githubusercontent.com/ionic-team/ionicons/main/src/svg/hourglass.svg")

mtcars %>% 
  mutate(am = factor(am)) %>% 
  group_by(am) %>% 
  summarise(avg_mpg = mean(mpg)) %>% 
  mutate(image = list(hourglass_svg, hourglass_svg)) %>% # 用解析后的SVG对象替换图片链接
  ggplot(aes(x=factor(am), y=avg_mpg)) + 
  geom_col(width = 0.5) + 
  geom_image(aes(image=image), size=.2) + 
  theme_minimal()

方法2:用magick处理SVG转成可识别格式

用magick包读取SVG并转换成内存中的PNG格式,再给ggimage用:

library("ggplot2")
library("ggimage")
library("magick")
library("dplyr")

# 读取SVG并转为magick对象
hourglass_magick <- image_read_svg("https://raw.githubusercontent.com/ionic-team/ionicons/main/src/svg/hourglass.svg")

mtcars %>% 
  mutate(am = factor(am)) %>% 
  group_by(am) %>% 
  summarise(avg_mpg = mean(mpg)) %>% 
  mutate(image = list(hourglass_magick, hourglass_magick)) %>% 
  ggplot(aes(x=factor(am), y=avg_mpg)) + 
  geom_col(width = 0.5) + 
  geom_image(aes(image=image), size=.2) + 
  theme_minimal()

关于geom_icon的说明

geom_icon主要是用来加载Font Awesome这类图标字体里的图标,不是直接读取本地或在线的SVG文件。如果想用内置图标,去看ggimage的文档找对应的图标名称和字体库配置就行。


内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:03:31