Я пытаюсь добавить sub-group labels
и упорядочить наблюдения по оси x в моем ggplot2 .Здесь уже есть несколько вопросов по этому поводу, но все ответы рекомендуют использовать фасетку (например, здесь ).Мой сюжет уже огранен, так что эти ответы не работают для меня.Я попытался использовать reorder(x, by_this_variable)
, но, похоже, это работает, только если by_this_variable является осью Y.Зачем?Если я пытаюсь переупорядочить его с помощью другой переменной, я получаю предупреждение:
аргумент не является числовым или логическим
Чтобы быть более точным, я намечаю две точки(проценты по участнику, полученные в двух разных задачах) для каждого дискретного значения оси X (1 для каждого участника) со стрелками, соединяющими точки для каждого участника.Это указывает на то, было ли на поведение участников оказано отрицательное или положительное влияние на задачи.Мои аспекты - это 2 разных состояния (лечение), в которые участники были случайным образом отсортированы.Теперь я хотел бы сгруппировать график с точками и стрелками в соответствии с различными источниками участников (возможный предиктор для разных ответов на лечение) и добавить эту информацию в качестве метки на оси X, но все, чего я могу достичь прямо сейчас, - это иметьзначения отсортированы в алфавитном порядке (по умолчанию).
Этот график может оказаться слишком занятым.Если есть лучший способ отобразить всю эту информацию (относительное изменение поведения по заданию, участнику, условию, происхождению) в одном графике, я открыт для предложений!
Мой код:
Data <- data.frame(c(28.5, 20, 55.4, 30.5, 66.6, 45.4, 43.2, 43.1, 28.5, 55.4, 30.5,
66.6, 45.4, 20), c("Participant 1", "Participant 1",
"Participant 2", "Participant 2", "Participant 3",
"Participant 3","Participant 4", "Participant 4","Participant 5",
"Participant 5", "Participant 6", "Participant 6", "Participant 7",
"Participant 7"),c("India", "India", "India", "India", "Algeria",
"Algeria", "Algeria", "Algeria", "India", "India", "India",
"India", "Algeria", "Algeria"),c("Treatment A", "Treatment A",
"Treatment B", "Treatment B","Treatment A", "Treatment A",
"Treatment B", "Treatment B", "Treatment A", "Treatment A",
"Treatment B", "Treatment B", "Treatment A", "Treatment A"),
c("Task 1", "Task 2", "Task 1", "Task 2", "Task 1", "Task 2",
"Task 1", "Task 2", "Task 1", "Task 2", "Task 1", "Task 2",
"Task 1", "Task 2"))
colnames(Data) <- c("Percentage", "Participant", "Origin", "Treatment", "Task")
ggplot(Data, aes(y=Percentage, x = Participant, group = Participant))+
geom_point(aes(color = Task))+
geom_line(arrow = arrow(length=unit(0.30,"cm"), type = "closed"), size = .3)+
facet_grid(~Treatment, scales = "free_x", space = "free_x")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Это дает следующий сюжет:
Участок
Участники 1 и 5 из Индиии 3 и 7 из Алжира, поэтому я хотел бы сгруппировать их по оси X и добавить метку для происхождения.
РЕДАКТИРОВАТЬ:
Вышеприведенное предупреждение, как представляется, вытекает из того факта, чточто Origin является многоуровневым фактором (и, по-видимому, переупорядочение работает только с числовыми значениями), поэтому установка x = reorder (Participant, as.numeric (Origin)) упорядочит значения в соответствии с Origin, но как я могу добавить соответствующий Originнадписи под сюжетом?