R : stat_smooth 组(x 轴)
R : stat_smooth groups (x axis)
我有一个Database,想用stat_smooth显示一个数字。
我可以展示 avg_time 与 Scored_Probabilities 的对比图,它看起来像这样:
c <- ggplot(dataset1, aes(x=Avg.time, y=Scored.Probabilities))
c + stat_smooth()
但是当把Avg.time改成time或者Age时,出现错误:
c <- ggplot(dataset1, aes(x=Age, y=Scored.Probabilities))
c + stat_smooth()
error: geom_smooth: Only one unique x value each group. Maybe you want aes(group = 1)?
我该如何解决?
错误消息说要设置 group=1
,这样做会产生另一个错误
ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+stat_smooth()
geom_smooth: method="auto" and size of largest group is >=1000, so using gam with formula: y ~ s(x, bs = "cs"). Use 'method = x' to change the smoothing method.
Error in smooth.construct.cr.smooth.spec(object, data, knots) :
x has insufficient unique values to support 10 knots: reduce k.
现在唯一 x
个值的数量不够。
所以有两个解决方案:i) 使用另一个函数,如 mean
,ii) 使用抖动稍微移动 Age。
ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+
geom_point()+
stat_summary(fun.y=mean, colour="red", geom="line", size = 3) # draw a mean line in the data
或
ggplot(dataset1, aes(x=jitter(as.numeric(as.character(Age))), y=Scored.Probabilities, group=1))+
geom_point()+stat_smooth()
请注意 as.numeric
的使用,因为 Age
是一个因数。
我有一个Database,想用stat_smooth显示一个数字。
我可以展示 avg_time 与 Scored_Probabilities 的对比图,它看起来像这样:
c <- ggplot(dataset1, aes(x=Avg.time, y=Scored.Probabilities))
c + stat_smooth()
但是当把Avg.time改成time或者Age时,出现错误:
c <- ggplot(dataset1, aes(x=Age, y=Scored.Probabilities))
c + stat_smooth()
error: geom_smooth: Only one unique x value each group. Maybe you want aes(group = 1)?
我该如何解决?
错误消息说要设置 group=1
,这样做会产生另一个错误
ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+stat_smooth()
geom_smooth: method="auto" and size of largest group is >=1000, so using gam with formula: y ~ s(x, bs = "cs"). Use 'method = x' to change the smoothing method.
Error in smooth.construct.cr.smooth.spec(object, data, knots) :
x has insufficient unique values to support 10 knots: reduce k.
现在唯一 x
个值的数量不够。
所以有两个解决方案:i) 使用另一个函数,如 mean
,ii) 使用抖动稍微移动 Age。
ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+
geom_point()+
stat_summary(fun.y=mean, colour="red", geom="line", size = 3) # draw a mean line in the data
或
ggplot(dataset1, aes(x=jitter(as.numeric(as.character(Age))), y=Scored.Probabilities, group=1))+
geom_point()+stat_smooth()
请注意 as.numeric
的使用,因为 Age
是一个因数。