【问题标题】:Put images with text as ticklabels with ggplot2使用 ggplot2 将带有文本的图像作为刻度标签
【发布时间】:2020-11-20 03:22:21
【问题描述】:

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

我想实现这样的目标:

数据如下:

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

提前致谢!

【问题讨论】:

标签: r ggplot2 plot bar-chart data-visualization


【解决方案1】:

很确定,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"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    相关资源
    最近更新 更多