Гистограммы – популярный способ визуализации распределения данных. Иногда бывает полезно сравнить несколько распределений, наложив гистограммы на один и тот же график. В этой статье блога мы рассмотрим различные методы создания перекрывающихся гистограмм с помощью пакета ggplot2 в R. Мы предоставим примеры кода и обсудим преимущества и ограничения каждого подхода.
Метод 1: использование функции geom_histogram()
Самый простой способ создания перекрывающихся гистограмм в ggplot2 — использование функции geom_histogram(). Вот пример:
library(ggplot2)
# Create a data frame with two variables
data <- data.frame(
variable1 = rnorm(1000, mean = 0, sd = 1),
variable2 = rnorm(1000, mean = 1, sd = 1)
)
# Create an overlapping histogram
ggplot(data, aes(x = variable1, fill = "Variable 1")) +
geom_histogram(alpha = 0.7, position = "identity", bins = 30) +
geom_histogram(aes(x = variable2, fill = "Variable 2"), alpha = 0.7, position = "identity", bins = 30) +
labs(title = "Overlapping Histograms",
x = "Value",
y = "Frequency",
fill = "Variable") +
scale_fill_manual(values = c("Variable 1" = "blue", "Variable 2" = "red"))
Метод 2: использование функции stat_bin()
Другой подход заключается в использовании функции stat_bin(), которая позволяет лучше контролировать группировку и внешний вид гистограмм. Вот пример:
library(ggplot2)
# Create a data frame with two variables
data <- data.frame(
variable1 = rnorm(1000, mean = 0, sd = 1),
variable2 = rnorm(1000, mean = 1, sd = 1)
)
# Create an overlapping histogram
ggplot(data, aes(x = variable1, fill = "Variable 1")) +
stat_bin(geom = "bar", bins = 30, alpha = 0.7, position = "identity") +
stat_bin(aes(x = variable2, fill = "Variable 2"), bins = 30, alpha = 0.7, position = "identity") +
labs(title = "Overlapping Histograms",
x = "Value",
y = "Frequency",
fill = "Variable") +
scale_fill_manual(values = c("Variable 1" = "blue", "Variable 2" = "red"))
Метод 3: использование кривых плотности
В дополнение к гистограммам вы также можете накладывать кривые плотности для сравнения распределений. Вот пример:
library(ggplot2)
# Create a data frame with two variables
data <- data.frame(
variable1 = rnorm(1000, mean = 0, sd = 1),
variable2 = rnorm(1000, mean = 1, sd = 1)
)
# Create an overlapping histogram with density curves
ggplot(data, aes(x = variable1)) +
geom_histogram(aes(y = ..density.., fill = "Variable 1"), alpha = 0.7, position = "identity", bins = 30) +
geom_density(aes(x = variable1, color = "Variable 1"), linetype = "dashed") +
geom_histogram(aes(x = variable2, y = ..density.., fill = "Variable 2"), alpha = 0.7, position = "identity", bins = 30) +
geom_density(aes(x = variable2, color = "Variable 2"), linetype = "dashed") +
labs(title = "Overlapping Histograms with Density Curves",
x = "Value",
y = "Density",
fill = "Variable",
color = "Variable") +
scale_fill_manual(values = c("Variable 1" = "blue", "Variable 2" = "red")) +
scale_color_manual(values = c("Variable 1" = "blue", "Variable 2" = "red"))
В этой статье блога мы рассмотрели различные методы создания перекрывающихся гистограмм с помощью пакета ggplot2 в R. Мы обсудили использование geom_histogram(), stat_bin() и кривых плотности для сравнения нескольких распределений. Каждый метод имеет свои преимущества и ограничения, и выбор зависит от характера данных и желаемой визуализации. Используя эти методы, вы можете эффективно сравнивать и анализировать несколько распределений на одном графике.