Julio,
Вы упоминаете, что p1 и p2 имеют одну и ту же ось X, но переупорядочение, которое вы делаете на основе среднего, не делает их одинаковыми. Ось p1
идет «один -> два -> три», а ось p2
- «два -> один -> три». Это намеренно?
Несмотря на это, ggplot
предлагает несколько других решений для объединения этих графиков в один, а именно colour
и faceting
(что вы, возможно, уже пробовали?). Первым шагом к любому из них является melt
ваш data.frame в длинном формате. Мы идентифицируем переменную id «Тип», и melt
предполагает, что остальные столбцы должны быть melted
.
test.m <- melt(test, id.var = "Type")
Быстрая проверка структуры нового объекта показывает, что почти все в строке, за исключением того, что уровни для типа немного не в порядке:
> str(test.m)
'data.frame': 12 obs. of 3 variables:
$ Type : Factor w/ 3 levels "One","Three",..: 1 3 1 1 2 2 1 3 1 1 ...
$ variable: Factor w/ 2 levels "RatingA","RatingB": 1 1 1 1 1 1 2 2 2 2 ...
$ value : int 3 5 5 7 4 8 36 53 57 74 ...
Итак, давайте изменим уровни:
test.m$Type <- factor(test.m$Type, c("One", "Three", "Two"), c("One", "Two", "Three"))
Теперь для прорисовки. С цветом:
ggplot(test.m, aes(x = Type, y = value, group = variable, colour = variable)) +
stat_summary(fun.y = "mean", geom = "point")
или с гранями:
ggplot(test.m, aes(x = Type, y = value, group = variable)) +
stat_summary(fun.y = "mean", geom = "point") +
facet_grid(variable ~ ., scales = "free")
Примечание. Я использовал аргумент scales = "free"
в огранке, чтобы каждый график имел свой собственный масштаб. Просто удалите этот аргумент, если это не тот эффект, который вам нужен.