这个问题来自早期的问题及其答案.
首先是一些玩具数据:
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)
Run Code Online (Sandbox Code Playgroud)
最初的问题是如何为每所学校绘制价值年度线.答案或多或少对应于下面的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())
Run Code Online (Sandbox Code Playgroud)
p1和p2都可以完成这项任务.p1和p2之间的区别在于p1 Year视为数字,而p2视为Year一个因子.此外,p2包含group美学geom_line.但是当group美学在p3中掉落时,线条就不会被画出来.
问题是:group当x轴变量是一个因素时,为什么审美必要,但当groupx轴变量是数字时,不需要审美?

gau*_*den 45
用哈德利本人的话来说:
[ 对于横轴上具有因子的折线图 ]重要的是手动指定分组.默认情况下,ggplot2使用绘图中所有分类变量的组合来对原点进行分组 - 这对于此绘图不起作用,因为您为每个点获得了单独的行.手动指定group = 1表示您想要一条连接所有点的线.
实际上你可以用koshke在这里展示的非常不同的方式对点进行分组