[问题] ggplot 资料问题

楼主: nosense (loiterer)   2017-12-27 21:16:08
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我有一笔资料,想用ggplot画成时间序列的图
画出来后,分成男女性别再画一次
结果出现 "错误: Aesthetics must be either length 1 or the same as the data "
google之后还是不太清楚原因
[程式范例]:
有四个变量no,sex,time,type type的值只有1跟4
head(data)
no sex time type
12094851 2 2015-10-18 1
12094851 2 2016-04-15 1
12094851 2 2016-07-14 1
12024856 2 2016-01-19 1
:
:
10567401 1 2015-12-20 4
11339563 1 2016-04-03 4
11255465 1 2015-12-12 4
31444461 2 2015-09-03 4
ggplot(data,aes(y=factor(no),x=time))+
geom_point(shape=type,size=1.7,colour=sex)+
geom_line()
画出来是这样 https://i.imgur.com/pOwgrDr.png
data_men<-data[data$sex==1,] 之后把男性的资料分离出来再做一次
ggplot(data=data_men,aes(y=factor(no),x=time))+
geom_point(shape=type)+
geom_line()
错误: Aesthetics must be either length 1 or the same as the data (162): shape
如果把shape移到aes()里面是可以执行 但线的位置会跑掉
ggplot(data=data_men,aes(y=factor(no),x=time,shape=factor(type)))+
geom_point()+
geom_line()
https://i.imgur.com/kJUlJ23.png
想知道错误讯息原因 谢谢
作者: andrew43 (讨厌有好心推文后删文者)   2017-12-28 12:06:00
geom_point()里应该要把shape=type包在aes。另外,geom_line()因为会继承ggplot()中的shape,所以同shape会画一条线,而不是同factor(no)画一条线其实我无法重现你的结果。先更新ggplot2版本看看。
楼主: nosense (loiterer)   2017-12-28 21:28:00
谢谢 我已改用别的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com