Как накладывать графики плотности в ggplot2 (с примерами)


График плотности — удобный способ визуализации распределения значений в наборе данных.

Часто вам может понадобиться визуализировать графики плотности нескольких переменных одновременно. К счастью, это легко сделать с помощью пакета визуализации данных ggplot2 в R со следующим синтаксисом:

ggplot(data, aes (x=value, fill=variable)) +
 geom_density(alpha= .25 )

Аргумент альфа управляет непрозрачностью каждого графика плотности. Важно установить это значение ниже 1, чтобы вы могли видеть каждый график плотности, когда они накладываются друг на друга.

В следующем пошаговом примере показано, как использовать этот синтаксис на практике.

Шаг 1: Создайте данные

Во-первых, давайте создадим поддельный набор данных с тремя переменными:

#make this example reproducible
set. seed (1)

#create data
df <- data.frame(var1=rnorm(1000, mean=0, sd=1),
 var2=rnorm(1000, mean=0, sd=3),
 var3=rnorm(1000, mean=3, sd=2))

#view first six rows of data
head(df)

 var1 var2 var3
1 -0.6264538 3.4048953 1.2277008
2 0.1836433 3.3357955 -0.8445098
3 -0.8356286 -2.6123329 6.2394015
4 1.5952808 0.6321948 4.0385398
5 0.3295078 0.2081869 2.8883001
6 -0.8204684 -4.9879466 4.3928352

Шаг 2. Преобразование данных из широких в длинные

Далее нам нужно преобразовать данные из широкого формата в длинный, чтобы сделать их совместимыми с ggplot2:

library (reshape)

#convert from wide format to long format
data <- melt(df)

#view first six rows
head(data)

 variable value
1 var1 -0.6264538
2 var1 0.1836433
3 var1 -0.8356286
4 var1 1.5952808
5 var1 0.3295078
6 var1 -0.8204684

Шаг 3: Создайте графики плотности наложения

Наконец, мы можем создать графики плотности наложения:

library (ggplot2)

#create overlaying density plots
ggplot(data, aes (x=value, fill=variable)) +
 geom_density(alpha= .25 ) 

Не стесняйтесь настраивать альфа -значение, чтобы сделать графики плотности более или менее прозрачными.

Например, вот как будут выглядеть графики, если мы увеличим значение альфа:

library (ggplot2)

#create overlaying density plots
ggplot(data, aes (x=value, fill=variable)) +
 geom_density(alpha= .7 ) 

Дополнительные ресурсы

Как создать диаграмму Ганта в R с помощью ggplot2
Как создать сгруппированный блокплот в R с помощью ggplot2
Как создавать параллельные графики в R с помощью ggplot2