#r #ggplot2
#r #ggplot2
Вопрос:
Я создал график со следующим кодом:
df %>%
mutate(vars = factor(vars, levels = reord)) %>%
ggplot(aes(x = EI1, y = vars, group = groups))
geom_line(aes(color=groups))
geom_point()
xlab("EI1 (Expected Influence with Neighbor)")
ylab("Variables")
Результат:
В то время как группа ei1_other находится в порядке убывания по x, точки ei1_gun упорядочены по переменным. Я бы хотел, чтобы обе группы следовали одному и тому же порядку, так что ei1_gun и ei1_other оба начинаются с лекарств, а затем спускаются в порядке переменных, а не убывают по порядку значений x.
Комментарии:
1. Пожалуйста, не могли бы вы поделиться своим
df
? Существует множество вариантов решения вашей проблемы, но без данных мы не сможем воспроизвести вашу проблему.2. Я прошу прощения. Я довольно новичок в SO, и я не думал добавлять некоторые образцы данных. Спасибо, что дали мне знать, и я сделаю это в следующий раз. @stefan предоставил решение ниже. Спасибо за ваши усилия.
Ответ №1:
Проблема в том, что порядок, в котором geom_line
соединяются точки, определяется значением на оси x. Чтобы решить эту проблему, просто поменяйте x
местами и y
и используйте coord_flip
.
Поскольку образец набора данных не был предоставлен, я использую пример набора данных, основанный на mtcars
, чтобы проиллюстрировать проблему и решение. В моем примере данные make
— это ваши vars
, value
ваши EI1
и name
ваши groups
:
library(ggplot2)
library(dplyr)
library(tidyr)
library(forcats)
example_data <- mtcars %>%
mutate(make = row.names(.)) %>%
select(make, hp, mpg) %>%
mutate(make = fct_reorder(make, hp)) %>%
pivot_longer(-make)
make
Включение x
и value
выключение отображения y
приводит к неупорядоченному линейному графику, как в вашем примере. Причина в том, что порядок, в котором точки соединяются, определяется value
:
example_data %>%
ggplot(aes(x = value, y = make, color = name, group = name))
geom_line()
geom_point()
xlab("EI1 (Expected Influence with Neighbor)")
ylab("Variables")
Напротив, Замена x
и y
, т. Е. Отображение make
x
и value
y
использование coord_flip
, дает хороший линейный график с упорядочением, поскольку порядок, в котором соединяются точки, теперь определяется make
(конечно, мы также должны поменять xlab
местами и ylab
):
example_data %>%
ggplot(aes(x = make, y = value, color = name, group = name))
geom_line()
geom_point()
coord_flip()
ylab("EI1 (Expected Influence with Neighbor)")
xlab("Variables")
Комментарии:
1. Спасибо @stefan. Это помогло мне пройти 99% пути. Мне просто нужно было добавить обратно в строку mutate,
mutate(vars = factor(vars, levels = reord))
и это привело меня к этому. Я прошу прощения за то, что не предоставил код. Я довольно новичок в SO и ценю советы и усилия.