R语言,shadowtext包和showtext包,字体选择和使用

Python015

R语言,shadowtext包和showtext包,字体选择和使用,第1张

2020年8月14日

2020年10月24日更新

https://cran.r-project.org/web/packages/showtext/vignettes/introduction.html

在许多情况下,R绘图中使用非标准字体并非易事,尤其是对于PDF设备而言。例如,创建带有汉字的PDF图形可能需要很多额外的工作。同样,R用户可能已在其系统中安装了各种字体,但是对于许多图形设备,没有直接且可移植的方式来使用这些字体。

Winston Chang开发的软件包是解决此问题的一个不错的解决方案,它主要致力于在PDF图形设备中使用TrueType字体(.ttf)。现在,新的解决方案showtext程序包能够支持更多的字体格式和更多的图形设备,并且避免使用外部软件。 showtext 使在R图形中使用各种类型的字体(TrueType,OpenType,Type 1,Web字体等)更加容易。

R语言对中文实在不友好,本该中文的地儿都成框了,在绘图中添加参数,或者 par(family = "Songti SC") ,还是觉得不舒服。

如果这样的话,我想进行一次欺骗

FontForge合并字体

B站有个up主用的是fontcreator。采用复制粘贴的方式将两个字体合并。

干脆添加一个启动项吧,也就是说启动R语言的一瞬间,运行 par(family = "Songti SC"

1.在R中输入 .libPaths ,得到

2.在/anaconda3/lib/R中找到文件 Rprofile

3.在 Rprofile 的最后添加

rm(list=ls())##清除之前数据

library(rms)  ###加载rms包#

library(foreign)

library(survival)

library(rmda)

##install.packages("DynNom")

library(DynNom)

setwd("C://Users//zhanglingyu//Desktop//测试")  #设置工作目录

rt<- read.table('测试.txt',header=T,sep="\t")

head(rt)  #查看前5行的数据

str(rt)

##接着对所有变量数据进行打包

ddist <- datadist(rt)  #将数据打包

options(datadist='ddist')

model1<- lrm(rt$fustat ~ Age+Gender+Tau+EMPG+Glu+HCY+VB12+ALB, data =  rt)

summary(model1)

par(mgp=c(1.6,0.6,0),mar=c(2,2,2,2))  ##设置画布

nomogram <- nomogram(model1,fun=function(x)1/(1+exp(-x)), ##逻辑回归计算公式

                    fun.at = c(0.001,0.01,0.05,seq(0.1,0.9,by=0.1),0.95,0.99,0.999),#风险轴刻度

                    funlabel = "Risk of Alzheimer Disease", #风险轴便签

                    lp=T,  ##是否显示系数轴

                    conf.int = F, ##每个得分的置信度区间,用横线表示,横线越长置信度越

                    abbrev = F#是否用简称代表因子变量

)

plot(nomogram,

    #1.变量与图形的占比

    xfrac=.35,

    #2.变量字体加粗

    cex.var=1,

    #3.数轴:字体的大小

    cex.axis=0.8,

    #4.数轴:刻度的长度

    tcl=-0.5,

    #5.数轴:文字与刻度的距离

    lmgp=0.3,

    #6.数轴:刻度下的文字,1=连续显示,2=隔一个显示一个

    label.every=1,

    #7.1个页面有几个数轴(这个可以压缩行间距)

    naxes=13,

    #8.垂直线的颜色.

    col.grid=gray(c(0.8, 0.95)),

    #9.线性预测轴名字

    lplabel="Linear Predictorlp",

    #10变量分数名字

    points.label='Points',

    #11总分名字

    total.points.label='Total Points',

    force.label=F#没啥用TRUE强制标记的每个刻度线都绘制标签,我也没研究明白

)

#运行以展示Nomogram每个变量的分数

model1

##生成改良诺模图

plot(nomogram,col.grid = c("Tomato2","DodgerBlue"))