R语言 ggplot2 多图排列 Part(2)

本文将接着讲解ggplot2的多图排列的下半部分,通过其他方式排列组合多张ggplot2的图。除此以外还可以给图加上图层,让你的数据报告更加多姿多彩。

  • 整合多图
    我们可以把不同类型的图放在一起,比方说散点图和密度图。
# 绘制散点图
sp <- ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width",
                color = "Species", palette = "jco",
                size = 3, alpha = 0.6)+
  border()                                         
# 绘制密度图,注意yplot用到了rotate来旋转
xplot <- ggdensity(iris, "Sepal.Length", fill = "Species",
                   palette = "jco")
yplot <- ggdensity(iris, "Sepal.Width", fill = "Species", 
                   palette = "jco")+
  rotate()
# 清除点
yplot <- yplot + clean_theme() 
xplot <- xplot + clean_theme()
# 合并多图
ggarrange(xplot, NULL, sp, yplot, 
          ncol = 2, nrow = 2,  align = "hv", 
          widths = c(2, 1), heights = c(1, 2),
          common.legend = TRUE)

R语言 ggplot2 多图排列 Part(2)

  • 整合图表和注释文字
# 绘制密度图
#::::::::::::::::::::::::::::::::::::::
density.p <- ggdensity(iris, x = "Sepal.Length", 
                       fill = "Species", palette = "jco")
# 制作summary数据
stable <- desc_statby(iris, measure.var = "Sepal.Length",
                      grps = "Species")
stable <- stable[, c("Species", "length", "mean", "sd")]
# 用ggtexttable绘制表格
stable.p <- ggtexttable(stable, rows = NULL, 
                        theme = ttheme("mOrange"))
# 添加注释文字用到了ggparagraph
text <- paste("iris data set gives the measurements in cm",
              "of the variables sepal length and width",
              "and petal length and width, respectively,",
              "for 50 flowers from each of 3 species of iris.",
              "The species are Iris setosa, versicolor, and virginica.", sep = " ")
text.p <- ggparagraph(text = text, face = "italic", size = 11, color = "black")
# 整合一下  
ggarrange(density.p, stable.p, text.p, 
          ncol = 1, nrow = 3,
          heights = c(1, 0.5, 0.3))

R语言 ggplot2 多图排列 Part(2)

  • 还可以添加背景图层
mypngfile <- download.file("https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/France_Flag_Map.svg/612px-France_Flag_Map.svg.png", 
                           destfile = "france.png", mode = 'wb') 
img <- png::readPNG('france.png') 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
  background_image(img)+
  geom_point(aes(color = Species), alpha = 0.6, size = 5)+
  color_palette("jco")+
  theme(legend.position = "top")

R语言 ggplot2 多图排列 Part(2)

上一篇:C++ 建造者模式


下一篇:SpringBoot高并发!南京java软件工程师招聘