如何使R gtable适合图像

问题描述

我正在开发gridExtra R包的扩展,使其具有标签不是文本而是其他杂物的表。我正在尝试在gtable上使用rbind函数将两个gtables对象排列在一起,但是问题是生成的图不适合图像。

如何使生成的gtable对象适合图像?关于单位,我使用npc单位分别绘制每个笔芯,并在绘制gtable矩阵时指定宽度和高度。

例如,我尝试使用pdf(width=10,height=14)来更改pdf的宽度和高度,但这并不是很令人满意,因为除非我指定了合适的比例,否则这不符合gtable_circle对象单元格的正方形格式这取决于gtable矩阵中的列和行的数量。

非常感谢您的帮助!

这是其中gtable_textgtable_circle是返回gtable对象的自定义函数的代码。

library(grid)                                         
library(gtable)                                       
load("../tests/testthat/testdata/DBS.rda")            
                                                      
theme <- ttheme_awesome()                             
                                                      
d <- SummarizedExperiment::assays(DBS)$proportion     
d <- norm_and_cat(d,ncat=theme$core$ncircle,vmax=0.5)
col <- t(colnames(d))                                 
                                                      
pdf('testplot.pdf')                                   
                                                      
g1 <- gtable_text(col,name="colhead-1",¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ fg_fun = theme$colhead$fg_fun,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ bg_fun = theme$colhead$bg_fun,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ fg_params = theme$colhead$fg_params,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ bg_params = theme$colhead$bg_params,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ padding=theme$colhead$padding)      
                                                      
g2 <- gtable_circle(d,name="circle",¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ fg_fun = theme$core$fg_fun,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ bg_fun = theme$core$bg_fun,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ fg_params = theme$core$fg_params,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ bg_params = theme$core$bg_params,¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ padding=theme$core$padding)       
                                                      
g <- rbind(g1,g2,size="last")                       
grid.draw(g)                                          
                                                      
dev.off()                                             

这是我将适合图像的绘图结果。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)