图像作为坐标轴刻度 ggplot

6

我一直在寻找一种使用PNG图像作为ggplot2中的轴标记的方法,更准确地说,在ggridges中。我已经阅读并尝试复制这些帖子的答案,但是从发布到现在,包的语法已经发生了很大变化:

用额外的刻度和标签注释ggplot 如何在ggplot2中使用grImport导入的图形作为轴刻度标签(使用网格函数)? R - ggplot2中的图标作为x轴标签

我想要添加PNG(或其他类型)图像作为标记标签,而不是标签virginica、setosa和versicolor;

library(ggridges)
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges()
1个回答

4

cowplot软件包使这变得更加容易。

构建图表:

library(ggridges)
library(ggplot2)

p <- ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges()

加载图像并使用axis_canvas()构建垂直图像条:

library(cowplot)

pimage <- axis_canvas(p, axis = 'y') + 
  draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Iris_virginica.jpg/295px-Iris_virginica.jpg", y = 2.5, scale = 0.5) +
  draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Iris_versicolor_3.jpg/320px-Iris_versicolor_3.jpg", y = 1.5, scale = 0.5) +
  draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Kosaciec_szczecinkowaty_Iris_setosa.jpg/450px-Kosaciec_szczecinkowaty_Iris_setosa.jpg", y = 0.5, scale = 0.5)


# insert the image strip into the plot
ggdraw(insert_yaxis_grob(p, pimage, position = "left"))

enter image description here

没有 axis.text.y:

p <- ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges() +
  theme(axis.text.y = element_blank())
ggdraw(insert_yaxis_grob(p, pimage, position = "left"))

您也可以移除垂直线,目前我找不到一种方法让图像条在坐标轴线的左侧。

输入图片说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接