R 如何在ggplot上绘制不同的线&引用;组=变量";不';不行?
我使用的是babynames数据集。筛选出至少一年内最常出现的男性姓名。总共有八个名字。现在,我想在一个图中绘制这八个名称中每一个的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 %>%
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)