geom_image(): как индивидуально установить размеры изображения
Этот вопрос связан с тем, можно ли выполнить geom_image() из пакета ggimage, чтобы сохранить соотношение сторон изображения? но в моем приложении я хочу создать диаграмму рассеяния, используя изображения, масштабированные пропорционально их фактическим размерам.
Фигура (сделано вручную, с PPT), которую я хочу воспроизвести с geom_image()
показано здесь:
Я читаю данные следующим образом и получаю размеры изображения, используя readPNG()
в png
пакет:
> brains.dat <- file.path(folder, "brain-size.csv")
> brains <- read.csv(brains.dat, stringsAsFactors=FALSE)
> brains$class <- factor(brains$class)
>
> library(png)
>
> sizes <- t(sapply(brains$img, function(x) dim(readPNG(x))))
> brains$height <- sizes[,1]
> brains$width <- sizes[,2]
> brains
species class brain_weight neurons img height width
1 Capybara non-primate 48.2 0.30 capybara.png 31 70
2 Rhesus Macaque primate 69.9 1.71 rhesus.png 63 75
3 Western Gorilla primate 377.0 9.10 gorilla.png 71 95
4 Human primate 1232.0 16.30 human.png 98 117
5 African Bush Elephant non-primate 2848.0 5.59 elephant.png 98 168
>
Я не вижу способа установить высоту и ширину каждого изображения в вызове ниже, чтобы geom_image()
:
library(ggimage)
library(ggplot2)
col <- ifelse(brains$class=="primate", "blue", "red")
ggplot(brains, aes(x=brain_weight, y=neurons)) +
geom_text(aes(label=species), color=col, hjust="inward") +
geom_image(aes(image=img)) + theme_bw()
Из этого я получаю все изображения примерно одинакового размера и ширины. Я игнорирую твики, необходимые для лучшего размещения меток.
Изменить: это было подано как проблема, https://github.com/GuangchuangYu/ggimage/issues/6. Автор говорит, что это еще не поддерживается, но, возможно, есть обходной путь?
1 ответ
Поддерживается, как показано на https://github.com/GuangchuangYu/ggimage/issues/6.