Я строю корреляции в ggpairs
и разделяю данные на основе фильтра.
Графики плотности нормализуются по количеству точек данных в каждой отфильтрованной группе. Я бы хотел, чтобы они нормализовали общее количество точек данных во всем наборе данных. По сути, я хотел бы иметь возможность, чтобы сумма отдельных графиков плотности была равна графику плотности всего набора данных.
Я знаю, что это, вероятно, нарушает определение «графика плотности», но это стиль презентации, который я хотел бы изучить.
В простом ggplot
я могу сделать это, добавив y=..count..
к эстетике c, но ggpairs
не принимает эстетику x или y .
Некоторые примеры кода и графики:
set.seed(1234)
group = as.numeric(cut(runif(100),c(0,1/2,1),c(1,2)))
x = rnorm(100,group,1)
x[group == 1] = (x[group == 1])^2
y = (2 * x) + rnorm(100,0,0.1)
data = data.frame(group = as.factor(group), x = x, y = y)
#plot of everything
data %>%
ggplot(aes(x)) +
geom_density(color = "black", alpha = 0.7)
![Density plot of the whole data set](https://i.stack.imgur.com/DuMXn.png)
#the scaling I want
data %>%
ggplot(aes(x,y=..count.., fill=group)) +
geom_density(color = "black", alpha = 0.7)
![Density plot of dataset scaled to the total count](https://i.stack.imgur.com/1ZrIz.png)
#the scaling I get
data %>%
ggplot(aes(x, fill=group)) +
geom_density(color = "black", alpha = 0.7)
![Density plot of dataset scaled to the count of each group](https://i.stack.imgur.com/86rpH.png)
data %>% ggpairs(., columns = 2:3,
mapping = ggplot2::aes(colour=group),
lower = list(continuous = wrap("smooth", alpha = 0.5, size=1.0)),
diag = list(continuous = wrap("densityDiag", alpha=0.5 ))
)
![The actual ggpairs plot](https://i.stack.imgur.com/dCD8n.png)
Есть ли предложения, которые не связаны с переформатировать весь набор данных?