添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
#github安装开发版。二选一即可。 install.packages("devtools") devtools::install_github("thomasp85/patchwork")

用法示例:

##用以测试patchwork包
##主要是用来拼合多个图片的
setwd("E:/Rcode")
library(ggplot2)
install.packages("patchwork")
library(patchwork)
p1 <- ggplot(mtcars)+geom_point(aes(mpg,disp))
p2 <- ggplot(mtcars)+geom_boxplot(aes(gear,disp,group=gear))
p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) + geom_bar(aes(carb))
+表示横向排列,/表示纵向排列,一次可以有多个+ /组成公式

p1+p2

p1/p2

p1+p2/p3+p4

p2+(p1/p3)+p4

-表示两个图放置在一个嵌套层

p1-p2

通过ncol指定绘图的列数,或者是nrow指定绘图的行数
当有多个图的时候,如果指定的列或行比图的实际数量少,则会压缩对应的图的宽度或长度

p4+p1+p2+plot_layout(ncol = 2)

p1+p3+p4/p2+plot_layout(nrow=2) #会压缩p4和p2的高度

可以用plot_spacer()添加一个空白图占位置

p1+plot_spacer()+p2

布局可以使用ABCD来表示
layout2 <- 'AAB
p1+p2+p3+p4+plot_layout(design = layout2)
![p1+p2+p3+p4+plot_layout(design = layout2)  ](https://upload-images.jianshu.io/upload_images/18151951-5affc054cdb9c8d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

给图添加图注字母

p1+p2+p3+p4+plot_annotation(tag_levels = 'I') p1+p2/p3+p4+plot_annotation(tag_levels = 'A')

多重标注,先给p4|p2添加,再给p1添加。A1,A2和B

((p4 | p2) + plot_layout(tag_level = 'new'))/p1+plot_annotation(tag_levels = c('A', '1'))

同时添加多个标题

(p1+p2/p3+p4)+plot_layout(guides = 'collect')+plot_annotation(title="test layout for patchwork",caption = 'this is the caption',theme = theme(plot.caption = element_text(size=15)))

同时修改多个图的theme

(p1+p2/p4)*theme_void()

注意*号只能修改当前嵌套层,现在是只修改了p1图层,删除背景颜色
(p1+p2/p4)&theme_bw()+theme(panel.grid.major = element_blank(),panel.grid.minor = element_blank())

&是同时删除背景颜色和网格线 操作对象是所有图层

(p4-p1/p3)*(theme_bw()+ theme(panel.grid.major = element_blank(),panel.grid.minor = element_blank()))

只操作了P4图层,删掉背景色和网格线

注意操作符号:
  • - 是把多个图层合成一个嵌套层,
  • +是把后面的层,添加到前面的层,
  • |/分别表示横向排布和纵向排布。
  • *只操作一个嵌套层,&操作所有的层。
  • cowplot包的使用(基于ggplot2的拼图包,快速方便)

    #### cowplot包拼图
    library(ggplot2)
    library(cowplot)
    setwd("E:/R/cowplot/")
    plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
      geom_point(size=2.5)+theme_classic()
    plot.diamonds <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
      theme(axis.text.x = element_text(angle=70, vjust=0.5))+theme_classic()+scale_y_continuous(expand = c(0,0))
    ##插入空值,占据位置
    plot_grid(plot.mpg,NULL,NULL,plot.diamonds,labels=c("A", "NULL","NULL","B"),ncol = 2)
    plot2by2 <- plot_grid(plot.mpg,NULL,NULL,plot.diamonds,labels=c("A", "NULL","NULL","B"),ncol = 2)
    plot2by2
    ##保存图片
    save_plot("plot2by2.png", plot2by2,
              ncol = 2, # we're saving a grid plot of 2 columns
              #nrow = 2, # and 2 rows
              # each individual subplot should have an aspect ratio of 1.3
              base_aspect_ratio = 1.3
    #添加水印标注版权
    ggdraw(plot.mpg) + 
      #draw_plot_label("A", size = 14) +                     #添加标签A
      draw_label("Warning!", angle = -45, size = 100, alpha = .2,color = "red") #设置水印的旋转角度,大小,透明度,颜色。
    

    使用magick可以读取本地和网络的图片、视频,同时可以编辑图片

    #install.packages("magick")
    library(ggplot2)
    library(magick)
    #查看magick支持的图片的种类
    str(magick::magick_config())
    p <- ggplot(iris, aes(x=Sepal.Length, fill=Species)) + geom_density(alpha = 0.5)+theme_classic()
    p2 <- ggdraw()+draw_image("http://jeroen.github.io/images/tiger.svg",scale = .75)
    p3 <- ggdraw()+draw_image("./model.png",scale = .8)
    plot_grid(p,p2,p3,labels = "AUTO")
    ggsave("test_magick.png",width = 170,height = 230,units = "mm",dpi = 300)
    tiger <- image_read("http://jeroen.github.io/images/tiger.svg")
    sun <- image_read("./model.png")
    img <- c(tiger,sun)
    img <- image_scale(img, "300x300")
    image_info(img)
    ##magick的OCR识别功能测试(默认识别为英语,其他语言需要安装对应的数据库)
    #install.packages("tesseract")
    library(tesseract)
    img2txt <- function(in_img,out_txt){
      tri_3 <- image_read(in_img)
      image_ocr <- image_ocr(tri_3)
      cat(image_ocr)
      write(image_ocr,out_txt)
    img2txt("./eng.png","model.txt")
    左侧是ggplot2画的,右侧是网络图片,c是本地图片,合并到一张图上。