R語(yǔ)言繪圖包08--森林圖的繪制:forestplot


R語(yǔ)言繪圖包系列:


1. 基本用法和參數(shù)
forestplot(...)
# S3 method for data.frame
forestplot(x, mean, lower, upper, labeltext, is.summary, ...)

# S3 method for default
forestplot(
  labeltext,
  mean,
  lower,
  upper,
  align,
  is.summary = FALSE,
  graph.pos = "right",
  hrzl_lines,
  clip = c(-Inf, Inf),
  xlab = "",
  zero = ifelse(xlog, 1, 0),
  graphwidth = "auto",
  colgap,
  lineheight = "auto",
  line.margin,
  col = fpColors(),
  txt_gp = fpTxtGp(),
  xlog = FALSE,
  xticks,
  xticks.digits = 2,
  grid = FALSE,
  lwd.xaxis,
  lwd.zero,
  lwd.ci,
  lty.ci = 1,
  ci.vertices,
  ci.vertices.height = 0.1,
  boxsize,
  mar = unit(rep(5, times = 4), "mm"),
  title,
  legend,
  legend_args = fpLegend(),
  new_page = getOption("forestplot_new_page", TRUE),
  fn.ci_norm = fpDrawNormalCI,
  fn.ci_sum = fpDrawSummaryCI,
  fn.legend,
  shapes_gp = fpShapesGp(),
  ...
)

# S3 method for gforge_forestplot
print(x, ...)

# S3 method for gforge_forestplot
plot(x, y, ...)

# S3 method for grouped_df
forestplot(x, labeltext, mean, lower, upper, legend, is.summary, ...)
參數(shù) 用法
labeltext 主要是以矩陣或者list形式將數(shù)據(jù)導(dǎo)入函數(shù)业扒,最好以矩陣侯勉,因?yàn)閿?shù)據(jù)一般都是矩陣的胆数。
mean 均值
lower 95%置信區(qū)間下限
upper 95%置信區(qū)間上限
align 每列文字的對(duì)齊方式泵喘,偶爾會(huì)用到族檬。如:align=c("l","c","c") l:左對(duì)齊r:右對(duì)齊c:居中對(duì)齊
is.summary 主要的功能是讓表格的每一行字體出現(xiàn)差異,從而區(qū)分表頭纽竣。其值主要用TRUE/FALSE進(jìn)行差異化分配卑笨。
graph.pos 定位森林圖所在的位置。通過(guò)數(shù)字來(lái)確定為第幾列炼列。
hrzl_lines 以list形式設(shè)置表中線條的類(lèi)型只搁、影響范圍。Eg:“3”=gpar(lwd=1,columns=1:4,col=’red’)意思就是第3行的線條唯鸭,寬度為1须蜗,線段延伸至第四列。Col指的顏色目溉。
clip x軸的最大最小范圍
xlab x軸的標(biāo)題
zero 森林圖中基準(zhǔn)線的位置(無(wú)效線的橫坐標(biāo))
graphwidth 森林圖在表中的寬度如:graphwidth = unit(.4,"npc")
colgap 列與列之間的間隙寬度明肮,默認(rèn)是 6 mm,需要用 unit 的形式
lineheight 行的高度缭付,可以是數(shù)字辰斋,也可以是 unit 的形式
line.margin 行與行之間的間隙的寬度
col 森林圖橫線以及點(diǎn)的顏色滤否。box:box(點(diǎn)估計(jì)值)的顏色line:穿過(guò)方塊的橫線的顏色zero:中間那條基準(zhǔn)線的顏色summary:summary中菱形的顏色hrz_lines:表中第一條橫線的顏色eg:col=fpcolors(box=’royblue’,line=’darkblue’, summary=’royblue’, hrz_lines=’red’)
txt_gp 設(shè)置表格中文本的格式:用gpar進(jìn)行賦值泼返,其中cex為文本字體大小瑰步,ticks為坐標(biāo)軸大小,xlab為坐標(biāo)軸文字字體大小绣檬。label:表格主體文字的格式ticks:森林圖下方的坐標(biāo)軸的刻度文字格式xlab:定義的x軸標(biāo)題格式title:標(biāo)題文字的格式eg:txt_gp=fpTxtGp(label=gpar(cex=1.25), ticks=gpar(cex=1.1), xlab=gpar(cex = 1.2), title=gpar(cex = 1.2))
xticks 橫坐標(biāo)刻度根據(jù)需要可隨意設(shè)置足陨,如:xticks = c(0.5, 1,1.5, 2)
lwd.xaxis X軸線寬
lwd.zero 無(wú)效線的寬度
lwd.ci 置信區(qū)間線條的寬度(粗細(xì))
lty.ci 置信區(qū)間的線條類(lèi)型
ci.vertices 森林圖可信區(qū)間兩端添加小豎線(TRUE)
ci.vertices.height 設(shè)置森林圖可信區(qū)間兩端的小豎線高度,默認(rèn)是10%行高
boxsize box(點(diǎn)估計(jì)值)的大小
mar 圖形頁(yè)邊距娇未,如:mar=unit(rep(1.25, times = 4), "cm")
title 添加標(biāo)題
legend 當(dāng)同時(shí)顯示多個(gè)置信區(qū)間時(shí)墨缘,需要添加圖例
new_page 是否新頁(yè)
fn.ci_norm box(點(diǎn)估計(jì)值)的形狀,默認(rèn)是方塊。如:fn.ci_norm="fpDrawDiamondCI":box 類(lèi)型選擇鉆石

參考:forestplot: Draws a forest plot

2. 森林圖的繪制
library(forestplot)
rs_forest <- read.csv('demo.csv',header = FALSE)
rs_forest
#              V1           V2       V3              V4   V5   V6   V7
# 1         Group Case/Control        p       OR(95%CI)   NA   NA   NA
# 2           Age                                         NA   NA   NA
# 3           <50      127/211 2.43E-11 4.24(2.84~6.66) 4.24 2.84 6.66
# 4         50-59      115/244 4.14E-12   5.48(3.5~9.2) 5.48 3.50 9.20
# 5          >=60      132/237 1.25E-08 2.74(1.96~3.93) 2.74 1.96 3.93
# 6           Sex                                         NA   NA   NA
# 7          Male      323/318 1.00E-15  3.46(2.71~4.5) 3.46 2.71 4.50
# 8        Female       51/374 3.14E-09 4.21(2.69~7.01) 4.21 2.69 7.01
# 9       Smoking                                         NA   NA   NA
# 10          Yes      122/171 2.06E-07 2.56(1.82~3.71) 2.56 1.82 3.71
# 11           No      252/521 1.00E-15 4.16(3.17~5.59) 4.16 3.17 5.59
# 12 Hypertension                                         NA   NA   NA
# 13          Yes      193/207 3.31E-12  3.14(2.31~4.4) 3.14 2.31 4.40
# 14           No      181/485 1.00E-15 3.96(2.95~5.45) 3.96 2.95 5.45
# 15     Drinking                                         NA   NA   NA
# 16          Yes       83/111 2.44E-04 2.42(1.55~4.01) 2.42 1.55 4.01
# 17           No      291/581 1.00E-15 3.83(3.01~4.96) 3.83 3.01 4.96
演示數(shù)據(jù)集demo的格式
forestplot(labeltext = as.matrix(rs_forest[,c(1:4)]),
           mean = rs_forest$V5, 
           lower = rs_forest$V6, 
           upper = rs_forest$V7, 
           is.summary=c(T,T,F,F,F,T,F,F,T,F,F,T,F,F,T,F,F),
           zero = 1, 
           boxsize = 0.5, 
           lineheight = unit(6,'mm'),
           graphwidth = unit(35,'mm'),
           colgap = unit(2,'mm'),
           lwd.zero = 2,
           lwd.ci = 2,
           col=fpColors(box='#ef233c',summary="#9e2a2b",lines = 'blue1',zero = 'grey'),
           xlab="Odds Ratio",
           lwd.xaxis=2,
           lty.ci = "solid", ci.vertices.height = 0.15,clip=c(1,13),xticks.digits = 6,
           graph.pos = 4)
forestplot(labeltext = as.matrix(rs_forest[,c(1:4)]),
           mean = rs_forest$V5, 
           lower = rs_forest$V6, 
           upper = rs_forest$V7, 
           is.summary=c(T,T,F,F,F,T,F,F,T,F,F,T,F,F,T,F,F),
           graph.pos=4, #為Pvalue箱線圖所在的位置
           #定義標(biāo)題
           title="Hazard Ratio Plot",
           ##定義x軸
           xlab="    <---PCI Better---   ---Medical Therapy Better--->",
           ##根據(jù)亞組的位置镊讼,設(shè)置線型宽涌,寬度造成“區(qū)塊感”
           #hrzl_lines=list("2" = gpar(lwd=1, lineend="butt", columns=c(1:5),col="#99999922"),
           #                "18" = gpar(lwd=1, lineend="butt", columns=c(1:5),col="#99999922")),
           #fpTxtGp函數(shù)中的cex參數(shù)設(shè)置各個(gè)組件的大小
           txt_gp=fpTxtGp(label=gpar(cex=1.25),
                          ticks=gpar(cex=1.1),
                          xlab=gpar(cex = 1.2),
                          title=gpar(cex = 1.2)),
           ##fpColors函數(shù)設(shè)置顏色
           col=fpColors(box="#1c61b6", lines="#1c61b6", zero = "gray50"),
           #箱線圖中基準(zhǔn)線的位置
           zero=1,
           cex=0.9, lineheight = "auto",
           colgap=unit(8,"mm"),
           #箱子大小,線的寬度
           lwd.ci=2, boxsize=0.5,
           #箱線圖兩端添加小豎線蝶棋,高度
           ci.vertices=TRUE, ci.vertices.height = 0.4)
3. 森林圖結(jié)果解讀

(1)森林圖中橫短線與中線相交表示無(wú)統(tǒng)計(jì)學(xué)意義卸亮;
(2)95% CI上下限均>1,即在森林圖中玩裙,其95% CI橫線不與無(wú)效豎線相交兼贸,且該橫線落在無(wú)效線右側(cè)時(shí),說(shuō)明該指標(biāo)大于豎線代表的結(jié)局献酗;
(3)95% CI上下限均<1寝受,即在森林圖中,其95% CI橫線不與無(wú)效豎線相交罕偎,且該橫線落在無(wú)效線左側(cè)時(shí),說(shuō)明該指標(biāo)小于于豎線代表的結(jié)局京闰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載颜及,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末蹂楣,一起剝皮案震驚了整個(gè)濱河市俏站,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痊土,老刑警劉巖肄扎,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異赁酝,居然都是意外死亡犯祠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)酌呆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衡载,“玉大人,你說(shuō)我怎么就攤上這事隙袁√涤椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵菩收,是天一觀的道長(zhǎng)梨睁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)娜饵,這世上最難降的妖魔是什么坡贺? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上拴念,老公的妹妹穿的比我還像新娘钧萍。我一直安慰自己,他們只是感情好政鼠,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布风瘦。 她就那樣靜靜地躺著,像睡著了一般公般。 火紅的嫁衣襯著肌膚如雪万搔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天官帘,我揣著相機(jī)與錄音瞬雹,去河邊找鬼。 笑死刽虹,一個(gè)胖子當(dāng)著我的面吹牛酗捌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涌哲,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胖缤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了阀圾?” 一聲冷哼從身側(cè)響起哪廓,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎初烘,沒(méi)想到半個(gè)月后涡真,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肾筐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年哆料,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片局齿。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剧劝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抓歼,到底是詐尸還是另有隱情讥此,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布谣妻,位于F島的核電站萄喳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蹋半。R本人自食惡果不足惜他巨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧染突,春花似錦捻爷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至司志,卻和暖如春甜紫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骂远。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工囚霸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人激才。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓拓型,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瘸恼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吨述,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容