Agregar rectángulo transparente a la gráfica de caja en R

Jinku Hu 15 febrero 2024
  1. Utilice la función rect para agregar un rectángulo transparente a un diagrama de caja en R
  2. Utilice la función annotate con ggplot para agregar un rectángulo transparente a un diagrama de caja en R
Agregar rectángulo transparente a la gráfica de caja en R

Este artículo demostrará varios métodos sobre cómo agregar un rectángulo transparente a un diagrama de caja en R.

Utilice la función rect para agregar un rectángulo transparente a un diagrama de caja en R

Se puede dibujar un rectángulo transparente superpuesto al gráfico existente, construido usando la función boxplot. La función rect se llama después de la función plot para dibujar el rectángulo. Tenga en cuenta que rect también se puede utilizar para dibujar una secuencia de rectángulos con las coordenadas dadas. En este caso, solo agregamos un rectángulo al diagrama de caja que se superpone como fondo. La función rect toma posiciones como los primeros cuatro argumentos, que especifican el área del rectángulo. Estos cuatro argumentos se pueden pasar como un valor escalar o un vector de escalares. El siguiente ejemplo toma el conjunto de datos mtcars y sus dos columnas numéricas para dibujar en escalas. Dado que los valores son numéricos, podemos usar la función max para especificar algunas posiciones. La función rect también puede tomar el color como parámetro para rellenar el rectángulo. Esta vez, la función rgb se utiliza para pasar el valor de color y el parámetro alpha que representa su opacidad.

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))

función rect rectángulo transparente

Utilice la función annotate con ggplot para agregar un rectángulo transparente a un diagrama de caja en R

Si la gráfica se construye usando la biblioteca ggplot, podemos usar la función annotate para agregar un rectángulo transparente. El siguiente fragmento de código muestra la gráfica de caja con los valores de los caracteres en el eje x. La función annotate toma la cadena rect como primer argumento para especificar la forma del rectángulo de la capa de anotación. Los siguientes cuatro argumentos especifican los valores de posición de la forma. Aunque el eje x tiene valores no numéricos, la función puede enumerar sus posiciones y ajustar los números de posición tal como los pasa el usuario.

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

rectángulo transparente anotar ggplot

Alternativamente, se puede usar la función annotate para dibujar un rectángulo en un gráfico de líneas y resaltar el rango específico del gráfico. Observe que cuando las escalas tienen valores numéricos, los argumentos *min/*max pueden tomar los valores exactos de esos rangos.

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

rectángulo transparente ggplot xmax

Autor: 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 Facebook

Artículo relacionado - R Plot