изображение как ось галочка ggplot - PullRequest
0 голосов
/ 18 января 2019

Я искал способ использования изображений png в качестве отметок оси в ggplot2, точнее в ggridges Я прочитал и попытался повторить ответы на эти сообщения, но синтаксис пакетов сильно изменился с момента их публикации до даты:

Записать ggplot с дополнительной галочкой и меткой Как я могу использовать графику, импортированную с grImport, в качестве меток тиков оси в ggplot2 (используя функции сетки)? Значки в качестве меток оси X в R - ggplot2

Я бы хотел добавить png (или другой вид) изображений в метки галочек вместо меток virginica, setosa и versicolor;

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

1 Ответ

0 голосов
/ 18 января 2019
Пакет

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"))

enter image description here

Вы также можете удалить вертикальную линию, в настоящее время я не могу найти способ размещения полосы изображения с левой стороны линии оси.

...