r - 使用 ggplot2 将带有文本的图像作为刻度标签

标签 r ggplot2 plot bar-chart data-visualization

如何使用 ggplot2 将本地镜像文件作为 tickslabels 和国旗下的国家名称?

我想实现这样的目标:

enter image description here

数据如下:

countries = c("Norway", "Spain", "Germany", "Canada", "China")
values = c(10, 20, 30, 22, 19)

提前致谢!

最佳答案

可以肯定的是,ggtext 解决方案要简单得多。为了完整起见,您还可以执行以下操作。虽然带来了一些额外的依赖:

library(cowplot)
library(ggplot2)
library(magick)
df <- data.frame(countries = c("Norway", "Spain", "Germany", "Canada", "China"),
                 values = c(10, 20, 30, 22, 19))
p <- ggplot(df, aes(x = countries, y = values))+
  geom_bar(stat = "identity")+
  theme_bw()

pimage <- axis_canvas(p, axis = 'x')+
  cowplot::draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Canada_%28Pantone%29.svg/320px-Flag_of_Canada_%28Pantone%29.svg.png", x = 0.5, scale = 0.5)+
  cowplot::draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/640px-Flag_of_the_People%27s_Republic_of_China.svg.png", x = 1.5, scale = 0.5)+
  cowplot::draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/320px-Flag_of_Germany.svg.png", x = 2.5, scale = 0.5)+
  cowplot::draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/320px-Flag_of_Norway.svg.png", x = 3.5, scale = 0.5)+
  cowplot::draw_image("https://upload.wikimedia.org/wikipedia/en/thumb/9/9a/Flag_of_Spain.svg/320px-Flag_of_Spain.svg.png", x = 4.5, scale = 0.5)
  

ggdraw(insert_xaxis_grob(p, pimage, position = "center"))

enter image description here

关于r - 使用 ggplot2 将带有文本的图像作为刻度标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63172183/

相关文章:

r - 为什么 geom_text() 多次绘制文本?

mysql - 如何使用 Shiny 的mysql表创建图形?

r - 温度图 : Error in FUN(X[[i]], ...) : 未找到对象 'y'

r - 如何在 R 中将默认浏览器设置为 Internet Explorer?

r - 操作按钮和observeEvent

r - R中的体育简单评分系统实现

r - 在 R 中组合分组和堆叠条形图

r - 如何将空列添加到 r 中的数据框列表

r - coord_flip() 混淆轴标签?

plot - Zingchart奇怪的阶梯式绘图