首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在曲线图中对组进行排序的方法

问在曲线图中对组进行排序的方法
EN

Stack Overflow用户
提问于 2020-09-26 03:20:54
回答 1查看 124关注 0票数 1

我已经用以下代码创建了一个图:

代码语言:javascript
复制
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值的顺序递减。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-26 04:24:42

问题是geom_line连接点的顺序是由x轴上的值决定的。要解决这个问题,只需交换x和y并使用coord_flip即可。

由于没有提供示例数据集,因此我使用基于mtcars的示例数据集来说明问题和解决方案。在我的示例中,data make是vars,value是EI1,name是groups

代码语言:javascript
复制
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决定

代码语言:javascript
复制
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):

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64070207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档