目前最全的R语言-图片的组合与拼接

Python012

目前最全的R语言-图片的组合与拼接,第1张

https://www.rdocumentation.org/packages/customLayout/versions/0.2.0

https://mp.weixin.qq.com/s/zbp8pOQcNB4XBBF5SCg5GA

customLayout用于拼图特别方便,尤其是仪表盘布局

支持R内置的base绘图对象,ggplot2对象(与grid结合 )

Hide

”library(ggplot2)library(customLayout)

通过设置简单的数字矩阵以及对应的宽高比,可以非常方便的设置出来数字拼图

关键函数

mat数字矩阵必须从1开始,且必须连续

其它拼图包没有的功能,非常好用

跟合并矩阵类似。分为行合并和列合并

这个功能也是其它包没有的,非常有用

关键函数:

参数lay表示大画布,参数newlay表示要嵌套进去的小画布,field表示指定要嵌套的区域编号

关键函数:

cowplot是一个ggplot2包的简单补充,意味着其可以为ggplot2提供出版物级的主题等。

更重要的是,这个包可以组合多个”ggplot2”绘制的图为一个图,并且为每个图加上例如A,B,C等标签,

这在具体的出版物上通常是要求的。 语法结构与ggplot类似,将ggplot2图作为一个对象置于 ggdraw() 中

表达式:

draw_plot(plot, x = 0, y = 0, width = 1, height = 1, scale = 1)

draw_text(text, x = 0.5, y = 0.5, size = 14, hjust = 0.5, vjust = 0.5,...)

draw_plot_label(label, x = 0, y = 1, hjust = -0.5, vjust = 1.5, size = 16, fontface = "bold", family = NULL, colour = NULL, ...)

参数解释:

grid中文翻译为网格,可将其解释为画布分割,通过设定相应的参数,从而可以任意的摆放图形

常用函数:

语法:

参数解释:

layout参数

综合例子

子母图,主要是形成局部放大的效果,既可以从整体上对比,又兼顾特别小的数据组,或特别密的数据点可以查看,而没有必要单独做2张图

<pre style="box-sizing: border-boxfont-family: Monaco, Menlo, Consolas, "Courier New", monospacefont-size: 13pxwhite-space: pre-wrapdisplay: blockpadding: 9.5pxmargin: 0px 0px 10pxline-height: 1.42857color: rgb(51, 51, 51)word-break: break-alloverflow-wrap: break-word !importantbackground-color: whiteborder: 1px solid rgb(204, 204, 204)border-radius: 4pxmax-width: 100%font-variant-numeric: normalfont-variant-east-asian: normalletter-spacing: 0.544pxtext-align: justifywidows: 1overflow: auto">## png

蝴蝶图

主要函数:

语法:

参数解释:

把绘图对象添加到列表总,并把该列表传递给 grid.arrange() 函数中的grobs参数

子母图

grid包可以画字母图

安装gridExtra包后,ggplot2中多了一个 ggplotGrob( )函数,可以创建grob对象参数

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"))

library(plotrix)

twoord.plot(lx,ly,rx,ry,data=NULL,main="",xlim=NULL,lylim=NULL,rylim=NULL,

mar=c(5,4,4,4),lcol=1,rcol=2,xlab="",lytickpos=NA,ylab="",ylab.at=NA,

rytickpos=NA,rylab="",rylab.at=NA,lpch=1,rpch=2,

type="b",xtickpos=NULL,xticklab=NULL,halfwidth=0.4,axislab.cex=1,

do.first=NULL,xaxt="s",...)

xval1 <- seq.Date(as.Date("2017-01-02"), as.Date("2017-01-10"), by="day")

xval2 <- seq.Date(as.Date("2017-01-01"), as.Date("2017-01-15"), by="day")

going_up<-seq(3,7,by=0.5)+rnorm(9)

going_down<-rev(60:74)+rnorm(15)

twoord.plot(2:10,going_up,1:15,going_down,xlab="Sequence",

 ylab="Ascending values",rylab="Descending values",lcol=4,

 main="Plot with two ordinates - points and lines",

 do.first="plot_bg()grid(col=\"white\",lty=1)")

 axis.Date(1,xval2)

library(ggplot2)

library(gtable)

library(grid)

grid.newpage()

# two plots

p1 <- ggplot(mtcars, aes(mpg, disp)) + geom_line(colour = "blue") + theme_bw()

p2 <- ggplot(mtcars, aes(mpg, drat)) + geom_line(colour = "red") + theme_bw() %+replace% theme(panel.background = element_rect(fill = NA))

# extract gtable

g1 <- ggplot_gtable(ggplot_build(p1))

g2 <- ggplot_gtable(ggplot_build(p2))

# overlap the panel of 2nd plot on that of 1st plot

pp <- c(subset(g1$layout, name == "panel", se = t:r))

g <- gtable_add_grob(g1, g2$grobs[[which(g2$layout$name == "panel")]], pp$t, pp$l, pp$b, pp$l)

# axis tweaks

ia <- which(g2$layout$name == "axis-l")

ga <- g2$grobs[[ia]]

ax <- ga$children[[2]]

ax$widths <- rev(ax$widths)

ax$grobs <- rev(ax$grobs)

ax$grobs[[1]]$x <- ax$grobs[[1]]$x - unit(1, "npc") + unit(0.15, "cm")

g <- gtable_add_cols(g, g2$widths[g2$layout[ia, ]$l], length(g$widths) - 1)

g <- gtable_add_grob(g, ax, pp$t, length(g$widths) - 1, pp$b)

# draw it

grid.draw(g)

用ggplot2画个双坐标也太难了吧。。。。

d <- data.frame(name=c("zhao","qian","sun","li"),weight=c(62,58,79,60),height=c(178,169,180,173))

x <- d$name

y1 <- d$weight

y2 <- d$height

bar <- barplot(y1,xlim=c(0,5),ylim=c(0,100),ylab="Weight",col="blue",col.axis="blue",col.lab="blue")

mtext(x,side=1,line=1,at=bar,col="black")

mtext("Name",side=1,line=3,col="black")

par(new=T)    ## 创建新的画布,类似于ggplot2中的图层叠加

plot(bar,y2,axes=F,xlim=c(0,5),ylim=c(100,190),xlab="",ylab="",col="red",type="b")

axis(4,col="red",col.ticks="red",col.axis="red")

mtext("Heigth (cm)",side=4,line=3,col="red")

若画图时需要将纵坐标方向改变,可以采用取相反数的方法。正常情况下,y轴是从下往上依次增大,可以让所有数值乘以-1,使y轴从下往上依次减小,然后通过axis函数修改y轴的label。

R语言学习  绘制双坐标轴(双y轴)的方法 plotrix_瞎掰大数据_新浪博客

利用ggplot2画双坐标轴曲线