2012-04-27 136 views
32

组的审美从早期question and its answers.绘制线条和GGPLOT2

首先,一些玩具的数据对于这一个问题上:

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轴变量是数字?

enter image description here

回答

40

Hadley himself的话:

重要的[用于与在水平轴上的因子的线图]是手动指定分组。通过 默认ggplot2使用 中的所有分类变量的组合来绘制几何图形 - 这对于这个图形不起作用,因为 会为每个点获取单独一行。手动指定组= 1 表示您希望单条线连接所有点。

实际上,你可以组中非常不同的方式as demonstrated by koshke here

+0

所以当'x'是数字的点,通过因子分组观察假设不进行(且无法进行,因为很明显' x'不是一个因素)。我猜在数字“x”的情况下让我感到困惑的是,通过指定“group = 1”,但仍然可以通过多行而不指定“group”来获得单行。 – 2012-04-27 22:39:32

+0

是的,@Sandy Muspratt,在你的后一种情况下,数字'x'提供了一个自然排序,但没有任何因素来组合,因此其他分类变量发挥作用。我花了一段时间才把头围住它,现在它是合乎逻辑的。 (感谢接受)。 – gauden 2012-04-27 22:46:17

+0

感谢您的澄清 – 2012-04-27 22:51:09