这个问题来自早期的question and its answers.
首先是一些玩具数据:
df = read.table(text =
"School Year Value
A 1998 5
B 1999 10
C 2000 15
A 2000 7
B 2001 15
C 2002 20", sep = "", header = TRUE)
最初的问题是如何为每所学校绘制价值年度线。答案或多或少对应于下面的p1和p2。但也要考虑p3。
library(ggplot2)
(p1 <- ggplot(data = df, aes(x = Year, y = Value, colour = School)) +
geom_line() + geom_point())
(p2 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +
geom_line(aes(group = School)) + geom_point())
(p3 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +
geom_line() + geom_point())
p1和p2都可以完成这项任务。 p1和p2之间的区别在于p1将Year
视为数字,而p2将Year
视为一个因子。此外,p2在group
中包含geom_line
美学。但是,如果在p3中删除了group
美学,则不会绘制线条。
问题是:当x轴变量是一个因子时,为什么group
美学是必要的,但当x轴变量是数字时,不需要group
美学?
答案 0 :(得分:45)
用Hadley himself的话说:
重要的是[对于横轴上有因子的线图]是手动指定分组。通过 默认ggplot2使用所有分类变量的组合 分组geoms的情节 - 这对于这个情节不适用,因为你 获得每个点的单独一行。手动指定group = 1 表示您想要一条连接所有点的线。
您实际上可以用不同的方式对点进行分组as demonstrated by koshke here