Как складывать заполненные области вместо того, чтобы перекрывать их с помощью ggplot?
У меня есть график кривой Лоренца, который я заполнил факторными переменными (мужчина и женщина). Это было сделано достаточно просто, и перекрытие не было проблемой, потому что было всего два фактора.
Wage %>%
ggplot(aes(x = salary, fill = gender)) +
stat_lorenz(geom = "polygon", alpha = 0.65) +
geom_abline(linetype = "dashed") +
coord_fixed() +
scale_fill_hue() +
theme(legend.title = element_blank()) +
labs(x = "Cumulative Percentage of Observations",
y = "Cumulative Percentage of Wages",
title = "Lorenz curve by sex")
Однако, когда у меня больше двух факторов (в данном случае четыре), перекрытие становится серьезной проблемой, даже если я использую контрастные цвета. Изменение
alpha
на данном этапе мало что делает. Посмотри:
Wage %>%
ggplot(aes(x = salary, fill = Diploma)) +
stat_lorenz(geom = "polygon", alpha = 0.8) +
geom_abline(linetype = "dashed") +
coord_fixed() +
scale_fill_manual(values = c("green", "blue", "black", "white")) +
theme(legend.title = element_blank()) +
labs(x = "Cumulative Percentage of Observations",
y = "Cumulative Percentage of Wages",
title = "Lorenz curve by diploma")
На этом этапе я перепробовал все различные цветовые палитры, оттенки, пивовары, руководства и т. Д. Я также попытался изменить порядок факторов, но, как вы понимаете, это не сработало.
Что мне нужно, это, вероятно, один аргумент или функция, чтобы сложить все эти области друг на друга, чтобы все они имели разные цвета. Как ни странно, я не нашел то, что ищу, и решил обратиться за помощью.
Большое спасибо.
1 ответ
Проблему решил дорогой друг. Это было сделано путем добавления категориальных переменных слой за слоем, без определения кривой Лоренца в целом.
ggplot() + scale_fill_manual(values = wes_palette("GrandBudapest2", n = 4)) +
stat_lorenz(aes(x=Wage[Wage$Diploma==levels(Wage$Diploma)[3],]$salary, fill=Wage[Wage$Diploma==levels(Wage$Diploma)[3],]$Diploma), geom = "polygon") +
stat_lorenz(aes(x=Wage[Wage$Diploma==levels(Wage$Diploma)[4],]$salary, fill=Wage[Wage$Diploma==levels(Wage$Diploma)[4],]$Diploma), geom = "polygon") +
stat_lorenz(aes(x=Wage[Wage$Diploma==levels(Wage$Diploma)[2],]$salary, fill=Wage[Wage$Diploma==levels(Wage$Diploma)[2],]$Diploma), geom = "polygon") +
stat_lorenz(aes(x=Wage[Wage$Diploma==levels(Wage$Diploma)[1],]$salary, fill=Wage[Wage$Diploma==levels(Wage$Diploma)[1],]$Diploma), geom = "polygon") +
geom_abline(linetype = "dashed") +
coord_fixed() +
theme(legend.title = element_blank()) +
labs(x = "Cumulative Percentage of Observations",
y = "Cumulative Percentage of Wages",
title = "Lorenz curve by diploma")