我已经用以下代码创建了一个图:
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值的顺序递减。
发布于 2020-09-26 04:24:42
问题是geom_line连接点的顺序是由x轴上的值决定的。要解决这个问题,只需交换x和y并使用coord_flip即可。
由于没有提供示例数据集,因此我使用基于mtcars的示例数据集来说明问题和解决方案。在我的示例中,data 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)在x上映射make和在y上映射value会产生一个无序线状图,如您的示例所示。原因是这些点的连接顺序由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,即在x上映射make和在y上映射value,并利用coord_flip提供了一个很好的有序线条图,因为连接点的顺序现在由make确定(当然,我们还必须交换xlab和<代码>D28):
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")

https://stackoverflow.com/questions/64070207
复制相似问题