在ggplot2中的x轴标签下方添加图像

Posted

技术标签:

【中文标题】在ggplot2中的x轴标签下方添加图像【英文标题】:Adding images below x-axis labels in ggplot2 【发布时间】:2021-08-02 02:42:34 【问题描述】:

我有这个情节:

这是基于旧的 TidyTuesday 数据集 Astronaut 使用此代码块生成的。

library(tidyverse)
library(ggplot2)
library(ggtext)

astro_Q2_final %>%
  ggplot(aes(x = reorder(nationality, proportion), y = proportion)) +
  geom_col() +
  theme_minimal() +
  geom_text(aes(label = round(proportion, 3)), position = position_dodge(width = 0.9), 
            vjust = -0.25) +
  labs(title = "Proportion of Space Travellers who are Female, by Nationality",
       x = "Nationality",
       y = "Proportion of Female Astronauts")

数据本身很简单——x轴是国籍的字符变量,y轴是对应于计算出的比例的整数变量。我要做的就是在国家名称上方的 x 轴上添加民族国旗的图像。我试过这个photo alignment with graph in r 但没有运气;我认为这与 Claus Wilke 使用 expand.grid 函数创建 data 对象这一事实有关——我似乎无法将他正在做的事情转化为我需要对我的绘图/数据做的事情。任何帮助将不胜感激。

数据可以在这里找到https://raw.githubusercontent.com/gjpstrain/astro/main/data.csv

所以我又查看了 ggtext 文档并包含了以下内容:

labels <- c(
  U.S.S.R/Russia = "<img src = 'Russia.png' width = 100' /><br>Us-s-r/Russia",
  China = "<img src = 'China.jpg' width = '100' /><br>China",
  Italy = "<img src = 'Italy.png' width = '100' /><br>Italy",
  France = "<img src = 'France.jpg' width = '100' /><br>France",
  U.S = "<img src = 'US.png' width = '100' /><br>US",
  Japan = "<img src = 'Japan.png' width = '100' /><br>Japan",
  Canada = "<img src = 'Canada.png' width = '100' /><br>Canada",
  U.K = "<img src = 'UK.png' width = 100' /><br>UK",
  Korea = "<img src = 'South-Korea.jpg' width = '100' /><br>Korea")

但是当我尝试这个时:

astro_Q2_final %>%
  ggplot(aes(x = reorder(nationality, proportion), y = proportion)) +
  geom_col() +
  scale_x_discrete(name = NULL,
                   labels = labels)

我收到

【问题讨论】:

您能否帮助使这个问题成为一个可重复的问题,以便其他人可以测试和验证潜在的解决方案?例如你能举一个与astro_Q2_final相同形式的数据和图像的例子吗? github.com/wilkelab/ggtext 的示例有帮助吗? 我已将数据添加到我的 Git 并链接它。这些图像是 .jpg 和 .png 文件的混合,托管在与我的 .rproj 文件相同的文件夹中 我尝试复制 ggtext 文档中的示例,但无论是在本地调用还是从 url 调用,我都无法显示图像 【参考方案1】:

加载库ggtext并在最后添加这一行


astro_Q2_final %>%
  ggplot(aes(x = reorder(nationality, proportion), y = proportion)) +
  geom_col() +
  scale_x_discrete(name = NULL,
                   labels = labels) +
  theme(axis.text.x = ggtext::element_markdown())

如果图像链接正确,您应该获得所需的视觉效果。

【讨论】:

很棒的答案 +1

以上是关于在ggplot2中的x轴标签下方添加图像的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化分组点图使用EnvStats包的stat_n_text函数为每个分组添加样本数标签信息(例如,在图像中X轴上方添加n=11)

R语言ggplot2可视化分组点图使用EnvStats包的stat_n_text函数为每个分组添加样本数标签信息(例如,在图像中X轴上方添加n=11)

R语言ggplot2可视化分组箱图并在图像的右侧添加轴须图(rug plot)以及每个rug对应的标签信息(ggplot2 boxplot with labelled rug in R)

使用ggplot2更改R中的x轴刻度标签[重复]

ggplot2 没有坐标轴、图例等的绘图

R语言ggplot2可视化在可视化图形的X轴标签中添加温度摄氏度符号(add temperature degree symbol on axis label)