Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在ggplot上绘制不同的线&引用;组=变量";不';不行?_R_Ggplot2_Line Plot - Fatal编程技术网

R 如何在ggplot上绘制不同的线&引用;组=变量";不';不行?

R 如何在ggplot上绘制不同的线&引用;组=变量";不';不行?,r,ggplot2,line-plot,R,Ggplot2,Line Plot,我使用的是babynames数据集。筛选出至少一年内最常出现的男性姓名。总共有八个名字。现在,我想在一个图中绘制这八个名称中每一个的比例变量多年来的发展 babynames %>% filter(sex == "M") %>% group_by(year) %>% mutate(rank = min_rank(desc(n))) %>% filter(rank ==1) %>% ungroup() %>% d

我使用的是babynames数据集。筛选出至少一年内最常出现的男性姓名。总共有八个名字。现在,我想在一个图中绘制这八个名称中每一个的
比例
变量多年来的发展

    babynames %>%
  filter(sex == "M") %>%
  group_by(year) %>%
  mutate(rank = min_rank(desc(n))) %>%
  filter(rank ==1) %>%
  ungroup() %>%
  distinct(name)
我就是这样得到这些名字的

 babynames %>%
  filter(name %in% c("John", "Robert", "James", "Michael", "David",
                     "Jacob", "Noah", "Liam")) %>%
  ggplot() + geom_line(aes(x = year, y = prop, color = name, group = name))
通过这段代码,我得到了图1中的数字:

当我使用geom_point时,它看起来很好。我不明白,为什么
group=name
不起作用


问题是您没有聚合(或者过滤)
sex
变量。这可以通过应用
facet\u wrap()
进行验证:


我不确定自己是否理解得很好,但您是否想要一条连续的线(与geom point中的形状相同,但有直线)?是的,完全正确。但我刚刚找到了解决办法。我忘了过滤的不仅仅是名字,还有性别==“M”,因为除此之外,一年中有不同的点,因此垂直线。这样就可以了:babynames%%>%过滤器(名字%在%c(“约翰”、“罗伯特”、“詹姆斯”、“迈克尔”、“大卫”、“雅各布”、“诺亚”、“利亚姆”)、性别“M”)%%>%ggplot()+几何线条(aes(x=年份,y=道具,颜色=名称,组=名称))
babynames::babynames %>%
    filter(name %in% c("John", "Robert", "James", "Michael", "David",
                       "Jacob", "Noah", "Liam")) %>%
    ggplot() + 
    geom_line(aes(x = year, y = prop, color = name)) +
    facet_wrap(~sex)