2

这个问题与可以制作 ggimage 包中的 geom_image() 以保留图像纵横比有关吗?但在我的应用程序中,我想制作一个散点图,使用与实际图像大小成比例的图像。

我想重现的图(手动完成,带有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。作者说这还不支持,但也许有解决方法?

4

1 回答 1

0

支持,如https://github.com/GuangchuangYu/ggimage/issues/6上的示例所示。

于 2018-04-19T11:43:26.543 回答