2014-06-18 42 views
0

答案https://stackoverflow.com/a/12372998/3513286顯示瞭如何將標題添加到使用R的meta包創建的森林地塊。但它使用固定的座標。我想將標題定位到森林地塊,因爲我想繪製其中的幾個,並且它們具有不同數量的行,以便使用固定的座標,標題和情節之間的差距在所有這些情節中不會相同。定位森林地塊上方的標題(R - 元包)

如果我有足夠的聲望點,我會在提到的答案的評論中提出這個問題。如果有人可以將它移到那裏:那會很棒。

編輯:兩幅地塊很少對情節和標題之間有很大的空間:

library(meta) 
data(Fleiss93cont) 

# little space: 
forest(metacont(n.e, mean.e, sd.e, n.c, mean.c, sd.c, 
    data=rbind(Fleiss93cont, Fleiss93cont), sm="SMD")) 
grid.text("Title", .5, .75, gp=gpar(cex=2)) 

# a lot of space: 
forest(metacont(n.e, mean.e, sd.e, n.c, mean.c, sd.c, 
    data=Fleiss93cont[1:2,], sm="SMD")) 
grid.text("Title", .5, .75, gp=gpar(cex=2)) 
+0

問題更適合作爲獨立使用。 –

回答

0

至於別人回答,在這裏我目前的解決方法。這當然不是好的答案,因爲它使用了很多非R程序,但它可能比沒有好。

在這裏,我出口圖形爲PDF格式,請使用pdftoppm將其轉換成PNG格式,convert修剪它,讀的identify回成R輸出,看看在什麼比例的原始高度的上邊界非白色部分是。這個數字乘以1.1,給了我一個相當不錯的結果。

library(meta) 
data(Fleiss93cont) 

height <- function() { 
    dev.copy2pdf(file="tmp.pdf", width=12, height=6) 
    system("pdftoppm -png -r 72 tmp.pdf > tmp.png") 
    system("convert tmp.png -trim tmp.png") 
    system2("identify", "tmp.png", stdout="tmp") 
    tmp <- as.character(read.table("tmp")$V4) 
    tmp <- as.numeric(unlist(strsplit(tmp, "[x+]"))) 
    system("rm tmp tmp.pdf tmp.png") 
    return(1-tmp[4]/tmp[2]) 
} 

# longer table: 
forest(metacont(n.e, mean.e, sd.e, n.c, mean.c, sd.c, 
    data=rbind(Fleiss93cont, Fleiss93cont), sm="SMD")) 
h <- height(); print(h) 
grid.text("Title", .5, 1.1*h, gp=gpar(cex=2)) 
dev.copy2pdf(file="tmp_1.pdf", width=12, height=6) 

# shorter table: 
forest(metacont(n.e, mean.e, sd.e, n.c, mean.c, sd.c, 
    data=Fleiss93cont[1:2,], sm="SMD")) 
h <- height(); print(h) 
grid.text("Title", .5, 1.1*h, gp=gpar(cex=2)) 
dev.copy2pdf(file="tmp_2.pdf", width=12, height=6) 

一個很好的解決方案可能需要格包和/或森林功能的知識。