將透明矩形新增到 R 中的 Boxplot

Jinku Hu 2023年1月30日 2021年7月16日
  1. 使用 rect 函式將透明矩形新增到 R 中的箱線圖
  2. 使用 annotate 函式和 ggplot 將透明矩形新增到 R 中的 Boxplot
將透明矩形新增到 R 中的 Boxplot

本文將演示有關如何在 R 中向箱線圖新增透明矩形的多種方法。

使用 rect 函式將透明矩形新增到 R 中的箱線圖

可以繪製一個透明矩形作為現有圖形的疊加,使用 boxplot 函式構建。rect 函式在 plot 函式之後呼叫以繪製矩形。請注意,rect 也可用於繪製具有給定座標的矩形序列。在這種情況下,我們只向作為背景疊加的箱線圖中新增一個矩形。rect 函式將位置作為前四個引數,用於指定矩形區域。這四個引數可以作為標量值或標量向量傳遞。以下示例採用 mtcars 資料集及其兩個數字列來繪製比例尺。由於這些值是數字,我們可以使用 max 函式來指定一些位置。rect 函式還可以將顏色作為引數來填充矩形。這一次,rgb 函式用於傳遞顏色值和代表其不透明度的 alpha 引數。

boxplot(hp ~ mpg, data = mtcars,
       xlab = "Miles/(US) gallon", ylab = "Gross Horsepower",
       col = "orange")

rect(-1, -1, max(mtcars$hp + 100), max(mtcars$hp) + 100,
     col= rgb(red = 0.95, green = 0.8, blue = 0.3, alpha = 0.2))

透明矩形 rect 函式

使用 annotate 函式和 ggplot 將透明矩形新增到 R 中的 Boxplot

如果繪圖是使用 ggplot 庫構建的,我們可以使用 annotate 函式新增一個透明矩形。以下程式碼片段在 x 軸上顯示帶有字元值的箱線圖。annotate 函式將 rect 字串作為第一個引數來指定註釋層的矩形形狀。以下四個引數指定形狀的位置值。即使 x 軸具有非數字值,該函式也可以列舉它們的位置並擬合使用者傳遞的位置編號。

library(ggplot2)
library(dplyr)

p1 <- ggplot(InsectSprays, aes(x = spray, y = count)) +
  geom_boxplot(fill = "pink") +
  scale_x_discrete(name = "Number of babies") +
  ggtitle("Title of the Plot") +
  annotate("rect", xmin = 1, xmax = 3, ymin = 0, ymax = max(InsectSprays$count),
           alpha = .2, fill = "orange")

p1

透明矩形註釋 ggplot

或者,可以使用 annotate 函式在折線圖上繪製一個矩形並突出顯示繪圖的特定範圍。請注意,當比例具有數值時,*min/*max 引數可以從這些範圍中獲取精確值。

library(ggplot2)
library(babynames)
library(dplyr)

dat <- babynames %>%
  filter(name %in% c("Alice", "Maude", "Mae")) %>%
  filter(sex=="F")

p1 <- ggplot(dat, aes(x = year, y = n, color = name)) +
  geom_line() +
  scale_y_continuous(
    breaks = seq(0, 15000, 1000),
    name = "Number of babies") +
  ggtitle("Name Popularity Through Years") +
  annotate("rect", xmin = 1960, xmax = 2000, ymin = -1, ymax = max(dat$n),
         alpha = .2, fill = "orange")

p1

透明矩形 ggplot xmax

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - R Plot