我有一个我想用作自定义图例的图像 - 一个图中3个图的通用图例,结合grid.arrange:
我想我可以用png或一些这样的包加载到R中,并使用grid.arrange将它放在我的图表旁边。是否可以在已包含用于制作组合图表的函数的包中包含此类图像,如果是,则将其放在何处以及如何从R代码中调用它,然后从包中的位置调用它。我打算经常在这个图例中使用这种图形。
更新:
我在Package结构的根目录中创建了一个名为'img'的文件夹,并将文件放在里面。
在我的R代码中是行:
legend <- readPNG(system.file("img", "rgblegend.png", package="HybRIDS"), TRUE)
但是当构建二进制文件时,从本地zip文件安装它,我去绘图并且:
Error in readPNG(system.file("img", "rgblegend.png", package = "HybRIDS"), :
unable to open
如果我检查我的库,则没有文件夹'img'
编辑:
我检查了我的软件包的源版本 - 它包含'img'文件夹,但是从源代码安装也无法将文件夹放入我的目录。所以我想我现在的问题是,为什么制作二进制包不包含img文件夹,为什么源包包含它但不安装到我的库 - 我该怎么做才能纠正这个?
答案 0 :(得分:2)
agstudy's answer描述了如何在已安装的软件包中引用文件,而无需知道软件包的安装位置。问题的另一部分是将映像文件放入已安装的软件包中。
从the "Package subdirectories" second of Writing R Extensions开始,感兴趣的部分是关于inst
子目录:
inst
子目录的内容将以递归方式复制到安装目录中。inst
的子目录不应干扰R使用的子目录(目前R
,data
,demo
,exec
,libs
,{{ 1}},man
,help
和html
,早期版本使用Meta
,latex
)。R-ex
的复制发生在inst
之后,因此src
可以创建要安装的文件。
因此,要使文件显示在已安装软件包根目录下的Makefile
目录中,它必须出现在源的img
目录中。因此,将inst/img
从rgblegend.png
移至img
,然后再移动
inst/img
应该有用。
答案 1 :(得分:1)
如果我理解的问题是如何确保在包装内找到图像。您可以将png放在包的img
文件夹下。并使用类似的东西来调用它:
img <- readPNG(system.file("img", "Zwrch.png", package=package_name))
完整的解决方案看起来像这样:
library(ggplot2)
library(grid) ## to create the image grobe
library(png) ## to read the png
library(gridExtra) ## to arrange the plots
bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot()
img <- readPNG(system.file("img", "Zwrch.png", package=package_name))
legend <- rasterGrob(image=img)
grid.arrange(bp,legend)