Я использую R и ggplot для создания коробчатых диаграмм с наложением отдельных точек данных. На оси x есть две основные группы (var1 в sampleData). Вторая группа также имеет второстепенное деление (var2), которое я хотел бы обозначить заливкой точки. Я успешно сделал это с помощью функции new_scale_fill из пакета ggnewscale.
Однако, когда я это делаю, кажется, что дрожание изменяется таким образом, что все второстепенные точки деления (var2) группируются вместе слева и справа от прямоугольной диаграммы. Есть ли способ избежать этого и случайным образом сгруппировать все точки в группе var1?
Ниже приведены примеры данных и выходных графиков.
sampleData <- data.frame(numVal = c(rnorm(100)),
var1 = c(rep(c("x1", "x2"), each = 50)),
var2 = c(rep(c("x1","x2","x3"), times = c(50, 30, 20))),
var3 = c(rep(c("t1", "t2", "t3", "t4"), 25)))
ggplot(sampleData, aes(x = var1, y = numVal)) +
geom_boxplot(aes(fill = var1), alpha = 0.7) +
scale_fill_manual(values = c("red", "blue")) +
new_scale_fill() +
geom_point(aes(fill = var2), shape = 21,
position = position_jitterdodge()) +
scale_fill_manual(values = c("red", "blue", "white"))
theme(legend.position = "none")