可以使用ggimage软件包中的geom_image()来保留图像长宽比吗?

Cla*_*lke 2 r ggplot2 ggimage

在研究此答案时,我尝试geom_image()ggimage包中绘制图像带,但无法使其正常工作。geom_image()修改图像的宽高比,但我不知道如何阻止它(或者是否有可能)。我也不清楚用什么单位size来衡量。从代码的行为方式来看,也许它在npc从0到1的坐标范围内,而不管ggplot2坐标系如何?

这是我使用的代码:

require(ggimage)
df_img <- data.frame(phase = c("Interphase", "Prophase", "Metaphase", "Anaphase", "Telophase"),
                     image = c("http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_interphase.jpg",
                               "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_prophase.jpg",
                               "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_metaphase2.jpg",
                               "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_anaphase2.jpg",
                               "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_telophase.jpg"))
df_img$phase <- factor(df_img$phase, levels=df_img$phase)

ggplot(df_img, aes(x = phase, y = 0, image = image)) + geom_image(size = 0.18)
Run Code Online (Sandbox Code Playgroud)

这是结果图像:

在此处输入图片说明

这是图像的外观:

在此处输入图片说明

注意:这是一个专门关于ggimage行为的问题。我知道如何使用其他方法来生成正确的图像,例如通过使用draw_image()Cowplot。

bap*_*ste 5

ggplot(df_img, aes(x = phase, y = 0.25, image = image)) +
  geom_image(size = 0.5, by="height")+
  scale_size_identity()
Run Code Online (Sandbox Code Playgroud)

将产生

在此处输入图片说明

如果by指定,则在数据空间中将大小映射并解释为npc(宽度或高度),并为当前设备保留长宽比(在调整大小后不更改)。如果size为Inf,则图片会拉伸以填满整个面板。