为了账号安全,请及时绑定邮箱和手机立即绑定

ggplot2中的绘图线和组美学

/ 猿问

ggplot2中的绘图线和组美学

大话西游666 2019-11-30 10:44:24

首先是一些玩具数据:


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。但是,group如在p3中那样降低美感时,将不会绘制线条。


问题是:为什么group当x轴变量是一个因数时group美学是必需的,而当x轴变量是数字时就不需要美学?

http://img4.sycdn.imooc.com/5de1d7a00001718209000300.jpg

查看完整描述

2 回答

?
慕神8447489

用哈德利本人的话说:


[ 对于在水平轴上具有因子的折线图而言 ]重要的是手动指定分组。默认情况下,ggplot2使用绘图中所有类别变量的组合来对几何图形进行分组-这不适用于该绘图,因为每个点都有一条单独的线。手动指定group = 1表示您要用一条线连接所有点。


实际上,您可以按照koshke在此处演示的非常不同的方式对点进行分组


查看完整回答
反对 2019-11-30
?
一只斗牛犬

因此,当x为数字时,不会进行关于按因子对观察结果进行分组的假设(由于明显x不是因果关系,因此无法进行假设)。我想在数字情况下让我感到困惑的x是,仍然可以通过指定group = 1但没有指定的多行来获得单行group

查看完整回答
反对 2019-11-30
  • 2 回答
  • 0 关注
  • 145 浏览

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信