R ggimage包中的geom_image()是否可以保留图像纵横比?
在研究时,我试图通过包中的R ggimage包中的geom_image()是否可以保留图像纵横比?,r,ggplot2,ggimage,R,Ggplot2,Ggimage,在研究时,我试图通过包中的geom_image()绘制图像条,但无法使其工作geom_image()修改图像的纵横比,我不知道如何阻止它这样做(或者这是否可能)。我也不清楚测量的单位是什么。从代码的行为来看,它可能位于从0到1的npc坐标中,而不管ggplot2坐标系是什么 以下是我使用的代码: require(ggimage) df_img <- data.frame(phase = c("Interphase", "Prophase", "Metaphase", "Anaphase",
geom_image()
绘制图像条,但无法使其工作geom_image()
修改图像的纵横比,我不知道如何阻止它这样做(或者这是否可能)。我也不清楚测量的单位是什么。从代码的行为来看,它可能位于从0到1的npc
坐标中,而不管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)
require(ggimage)
df_img
将产生
如果指定了by
,则大小将在数据空间中映射并解释为npc(宽度或高度)以及当前设备保持的纵横比(不在调整大小后)。如果大小为Inf,则图片会拉伸以填充整个面板 一个相当“原始”的解决方案:
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)
p Re:从URL读取图像:我认为这两种方法都有优点。如果你想使用图像而不是点,在这里你会多次画同一幅图像,那么很明显,每次重读都是不好的。然而,对于仅向绘图添加少量图像的用例,如此处所示,要求用户设置一个单独的比例,将值映射到图像文件似乎过于复杂。我认为您的“调整大小后不显示”声明意味着我的问题的答案是“否”。因此,我将继续接受你的回答。
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)