这个问题是基于之前一个问题和它的答案。
首先是一些玩具数据:
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在geom_line
中包含一个group
美学。但是当像p3一样省略group
美学时,线就不会画出来。
问题是:为什么当x轴变量为因子时需要group
美学,但当x轴变量为数字时不需要group
美学?
x
是数值型时,不会做关于按因子分组观察的假设(也不能做这样的假设,因为显然x
不是一个因子)。我猜在数值型x
的情况下让我感到困惑的是,通过指定group = 1
仍然可以得到单行结果,但没有指定group
则会得到多行结果。 - Sandy Muspratt