ggpubr包详解

一、常用的绘图函数

ggplot2包是R语言中数据可视化的世界级库,ggpubr包是一款基于ggplot2进行封装的包,它解决了ggplot2绘图流程繁琐、调试困难等问题。在实际应用中,我们常常会用到以下几种函数:

1、ggscatter()

ggscatter() 用于绘制散点图,可以通过设置颜色、大小、形状等参数来展示不同的分类变量或数值差异。

{
  library(ggpubr)
  ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width",
            color = "Species", palette = "jco", size = 3,
            shape = 21, title = "Iris dataset",
            xlab = "Sepal length (cm)", ylab = "Sepal width (cm)")
}

2、ggline()

ggline() 主要用于绘制线性图,通过比较不同组别之间的数值差异,并分别用不同图例颜色进行展示。

{
  ggline(mpg, x = "year", y = "cty", color = "manufacturer",
         palette = "jco", add = "mean_se",
         title = "City mileage by manufacturer and year",
         xlab = "Year of production", ylab = "Miles per gallon")
}

3、ggdensity()

ggdensity() 用于绘制密度图,可以通过比较不同组别之间的数据分布情况进行统计分析。

{
  # plot density of diamond prices by color
  ggdensity(diamonds, x = "price", fill = "color", palette = "jco",
            title = "Density plot of diamond prices by color",
            xlab = "Price (US dollars)", ylab = "Density")
}

二、图表排版相关函数介绍

通过ggpubr包中的函数,可以进行图表及文本元素的排版/组合,便于生成美观、易读的数据报告。

1、ggarrange()

ggarrange() 用于组合多个ggplot2图表,可以根据需要调整排版方式(比如一行多列、多行多列、居中对齐等)。

{
  # first create ggplot objects
  p1 <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + geom_point() + ggtitle("Iris dataset")
  p2 <- ggplot(mpg, aes(x = cty, color = drv)) + geom_density() + ggtitle("Distribution of city miles per gallon by driver type")
  
  # arrange plots in two rows and one column
  ggarrange(p1, p2, nrow = 2, common.legend = TRUE, legend = "right")
}

2、ggtext()

ggarrange() 用于组合多个ggplot2图表,可以根据需要调整排版方式(比如一行多列、多行多列、居中对齐等)。

{
  # define text elements
  text1 <- "This is an example of a text line in a ggplot2 plot."
  text2 <- "This is another line of text separated by a line break.\nNote that we can use 'atop' to stack multiple lines of text on top of each other."
  
  # create plot object
  p <- ggplot(mpg, aes(x = class, y = hwy, fill = class)) +
    geom_boxplot() +
    ggtitle("Highway mileage by vehicle class") +
    theme_pubclean() +
    # add text elements using ggtext()
    ggtext(autoplottext(
      text_col = "black",
      face = "plain",
      atop(
        text1,
        text2
      )
    ),
    x = 0.2,
    y = 1.1,
    size = 12
  )
}

三、自定义配色和主题

ggpubr包中还提供了覆盖ggplot2默认配色和主题的函数,以便实现自定义的视觉效果。

1、get_palette()

get_palette() 可以获取常见的颜色配色方案r,也可以按照自己的需求进行设置。下面是一个展示rColorBrewer库中的配色方案的例子:

{
  # define color palettes
  library(rColorBrewer)
  palettes <- c("YlOrRd", "PuBu", "RdPu", "Greens", "Blues", "PuRd")
  
  # create plot object
  p <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + 
    geom_point() + 
    ggtitle("Iris dataset")

  # create plots using different palettes
  ggarrange(
    map(palettes, ~p + scale_color_brewer(palette = .x, name = .x)),
    ncol = 2, nrow = 3,
    common.legend = TRUE,
    legend = "right"
  ) 
}

2、theme_pubr()

theme_pubr() 提供了基于ggplot2的自定义主题,可以快速的修改图表的外观和风格。

{
# create plot object
p <- ggplot(mpg, aes(x = class, y = hwy, fill = drv)) +
      geom_boxplot() +
      ggtitle("Highway mileage by vehicle class and driver type") +
      theme_pubr()
}

四、图例相关函数介绍

图例(legend)是一种展示图表中各种颜色和形状代表的意义的元素。

1、get_legend()

get_legend() 用于提取图表中的图例,可以进行位置移动、大小修改、标题修改等相应的修改操作。

{
# create plot object
p <- ggplot(mpg, aes(x = class, y = hwy, fill = drv)) +
  geom_boxplot() +
  ggtitle("Highway mileage by vehicle class and driver type")

# extract the legend and adjust its position
legend <- get_legend(p)
p + theme(legend.position = "none") +
  annotation_custom(legend$grobs[[1]], xmin = 0.8, xmax = 1, ymin = 0.5, ymax = 0.7) 
}

2、add_legend()

add_legend() 可以为图表添加新的图例,将每种变量的含义清晰展示出来,便于观察和分析。

{
# create plot object
p <- ggplot(mpg, aes(x = class, y = hwy, color = drv)) +
  geom_point() +
  ggtitle("Highway mileage by vehicle class and driver type")

# add a title to the legend
legend_title <- "Driver type"
p + scale_color_manual(values = c("#F8766D", "#00BA38", "#619CFF"), name = legend_title) +
  add_legend(title = legend_title)
}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/309111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2025-01-04 19:30
下一篇 2025-01-04 19:30

相关推荐

  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25

发表回复

登录后才能评论