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/zh-tw/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

發表回復

登錄後才能評論