前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Meta分析森林图中文显示问题

Meta分析森林图中文显示问题

作者头像
Jamesjin63
发布2023-01-15 09:40:39
4670
发布2023-01-15 09:40:39
举报
文章被收录于专栏:EpiHubEpiHub

关于Meta分析的文章已经有很多,但是在出图时候遇到中文不显示,这里主要解决,如何保存图片里面显示中文的问题。

meta分析流程这里不做主要介绍。

进入主题:

meta森林图数据

这使用meta案例数据Olkin1995,计算病例与对照组的RR效应值。

代码语言:javascript
复制
library(meta)
data(Olkin1995)
head(Olkin1995)

这里是数据的展示各个研究的总人数及结局人数。

image

meta森林图

代码语言:javascript
复制
m2 <- metabin(ev.exp, n.exp, ev.cont, n.cont,
              data = Olkin1995, subset = year < 1970, studlab = paste0(author," ",year),
              method = "Inverse")
m2

forest(m2)
summary(m2)

# save
pdf( "Meta-forest-English.pdf",width = 10,height = 6)
forest(m2,comb.random=T)
dev.off()

这里我们使用pdf()进行保存

image

meta中文保存

这里我们将四个研究更改为中文名字,然后plot显示,发现显示的是空白。

代码语言:javascript
复制
# change to Chinese
df= Olkin1995 %>% filter(year < 1970) %>% 
  mutate(author=c("宁王","隆王","兔子","华熙"))
df

m2 <- metabin(ev.exp, n.exp, ev.cont, n.cont,
              data = df, studlab = paste0(author," ",year),
              method = "Inverse")
m2
forest(m2)

# save
pdf( "Meta-forest-CHN.pdf",width = 10,height = 6)
forest(m2,comb.random=T)
dev.off()

出错啦,出错啦,不显示中文。然后用pdf()进行保存,也不显示中文

image

image

Plot中文保存

Stacfamily = 'STHeitiSC-Light'或者 family="Arial Unicode MS"即可显示中文,然后我们保存

代码语言:javascript
复制
par(mfrow=c(1,2))

mydata = matrix( c( 2:6, c( 2,4,2,6,3 ) ), nrow= 2 )
mylabs = c( "新吉能", "天赐", "华里", "智飞", "天岳" )
barplot( mydata, beside=T, horiz= "T",
         names.arg= mylabs, las= 1, 
         col= c( "red", "blue" ))

mydata = matrix( c( 2:6, c( 2,4,2,6,3 ) ), nrow= 2 )
mylabs = c( "新吉能", "天赐", "华里", "智飞", "天岳" )
barplot( mydata, beside=T, horiz= "T",
         names.arg= mylabs, las= 1, 
         col= c( "red", "blue" ),family="Arial Unicode MS")

image

image

但是,pdf保存就出错,stackOverflow [1] 这里提示用 family="GB1"即可解决问题

代码语言:javascript
复制
## save
pdf( "plotname1.pdf" )
barplot( mydata, beside=T, horiz= "T",
         names.arg= mylabs, las= 1, 
         col= c( "red", "blue" ),family="GB1")
dev.off()

## save
pdf( "plotname2.pdf",family="GB1")
barplot( mydata, beside=T, horiz= "T",
         names.arg= mylabs, las= 1, 
         col= c( "red", "blue" ))
dev.off()

Plot中文保存森林图

这里给了两种方式,基本上都是利用family = 'GB1',但是用 library(showtext) [2]也可以用family = 'STHeitiSC-Light'或者 family="Arial Unicode MS"

代码语言:javascript
复制
## save
pdf( "Meta-forest-CHN.pdf",family="GB1",height = 6,width = 12)
forest(m2)
dev.off()

## save
library(showtext)
cairo_pdf( "plotname1.pdf",width = 12,height = 6)
showtext.begin()                ## turn on showtext
forest(m2,comb.random=T,
       family = 'GB1' )
showtext.end()                  ## turn off showtext
dev.off()

## save
library(showtext)
cairo_pdf( "plotname2.pdf",width = 12,height = 6)
showtext.begin()                ## turn on showtext
forest(m2,comb.random=T,
       family = 'STHeitiSC-Light' )
showtext.end()                  ## turn off showtext
dev.off()

## save
library(showtext)
cairo_pdf( "plotname3.pdf",width = 12,height = 6)
showtext.begin()                ## turn on showtext
forest(m2,comb.random=T,
       family = 'Arial Unicode MS' )
showtext.end()                  ## turn off showtext
dev.off()

自己去试试吧。

image

参考资料

[1]stackOverflow: https://stackoverflow.com/questions/12948701/how-to-plot-chinese-characters-on-pdf [2]

showtext: https://statr.me/2014/01/using-system-fonts-in-r-graphs/

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • meta森林图数据
  • meta森林图
  • meta中文保存
  • Plot中文保存
  • Plot中文保存森林图
    • 参考资料
    相关产品与服务
    图数据库 KonisGraph
    图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com