在研究这个答案时,我试图通过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)这就是由此产生的图像:

这就是图像应该是什么样子:

注意:这是一个专门关于ggimage行为的问题。我知道如何使用其他方法来生成正确的图像,例如,使用来自牛仔的draw_image()。
发布于 2017-11-24 21:44:44
ggplot(df_img, aes(x = phase, y = 0.25, image = image)) +
geom_image(size = 0.5, by="height")+
scale_size_identity()将产生

如果指定了by,大小将映射并解释为数据空间中的npc,无论是宽度还是高度,以及为当前设备维护的高宽比(而不是在调整大小之后)。如果尺寸为Inf,则图片延伸到整个面板。
发布于 2017-11-24 21:49:14
一个相当“原始”的解决方案:
p <- ggplot(df_img, aes(x = phase, y = 0, image = image)) +
geom_image(size = 0.18) + coord_fixed()
g <- ggplotGrob(p)
for (k in 1:length(g$grobs[[6]]$children[[3]]$children)) {
g$grobs[[6]]$children[[3]]$children[[k]]$height <- unit(0.8,"native")
}
library(grid)
grid.draw(g)

https://stackoverflow.com/questions/47479779
复制相似问题