gpt4 book ai didi

r - 是否可以使用 ggplot 创建数据和图像的多重图?

转载 作者:行者123 更新时间:2023-12-02 04:04:31 25 4
gpt4 key购买 nike

我想知道是否可以使用 ggplot2 创建包含图像的多重绘图(如构面):

What I would like

我不知道如何安排图像数据以将它们传递给 geom_raster() 或如何将图像包含在数据框中...

我尝试过的:

> img1 <- readPNG('1.png')
> img2 <- readPNG('2.png')
> img3 <- readPNG('3.png')

> test <- data.frame(c(1,2,3),c(5,2,7),c(img1,img2,img3))
> nrow(test)
[1] 4343040

我在这里已经遇到了一个问题,要构建一个包含图像的数据框...每 3 行重复一次(我猜每个像素一次)。

最佳答案

我最终采用了这个解决方案,它将绘图分解为 gtable,再添加一行并插入图像。当然,一旦分解就无法在绘图中添加更多图层,因此它应该是最后操作。我不认为 gtable 可以转换回绘图。

library(png)
library(gridExtra)
library(ggplot2)
library(gtable)
library(RCurl) # just to load image from URL

#Loading images
img0 <- readPNG(getURLContent('/image/3anUH.png'))
img1 <- readPNG(getURLContent('/image/3anUH.png'))

#Convert images to Grob (graphical objects)
grob0 <- rasterGrob(img0)
grob1 <- rasterGrob(img1)

# create the plot with data
p <- ggplot(subset(mpg,manufacturer=='audi'|manufacturer=='toyota'),aes(x=cty,y=displ))+facet_grid(year~manufacturer)+geom_point()

# convert the plot to gtable
mytable <- ggplot_gtable(ggplot_build(p))

#Add a line ssame height as line 4 after line 3
# use gtable_show_layout(mytable) to see where you want to put your line
mytable <- gtable_add_rows(mytable, mytable$height[[4]], 3)
# if needed mor row can be added
# (for example to keep consistent spacing with other graphs)

#Insert the grob in the cells of the new line
mytable <- gtable_add_grob(mytable,grob0,4,4, name = paste(runif(1)))
mytable <- gtable_add_grob(mytable,grob1,4,6, name = paste(runif(1)))

#rendering
grid.draw(mytable)

Result

注意:在这个例子中,我使用了两次相同的图像,但当然可以根据需要使用尽可能多的图像。

灵感来源:How do you add a general label to facets in ggplot2?

关于r - 是否可以使用 ggplot 创建数据和图像的多重图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com