从geom_line()中删除行尾的变形

时间:2016-07-14 00:45:19

标签: r ggplot2

我试图使用以下代码绘制lmer模型的预测:

p1 <- ggplot(Mac_Data_Tracking, aes(x = Rspan, y = SubjEff, colour = NsCond)) + 
geom_point(size=3) + 
geom_line(data=newdat, aes(y=predict(SubjEff.model,newdata=newdat)),lineend="round") 
print(p1)

我在每一行的末尾都有奇怪的变形,有没有办法删除它们?我已经更改了newdat中的数据,但这些行总是有这些变化。

结尾处有拐点的行:

enter image description here

2 个答案:

答案 0 :(得分:1)

请注意,您有geom_line(data=newdat, aes(y=predict(SubjEff.model,newdata=newdat))。因此,您已将newdat作为用于绘图的数据框geom_line。但是,对于您的y值,您提供了一个单独的预测矢量(基于newdat),而y实际上应该只是newdat的一列。我不确定为什么会导致末端的变形(可能在某种程度上,为每个端点x值提供了两个不同的y值),但这可能是问题的根源。

相反,您应该使用预测在newdat中创建一个列(如果您还没有),并将该列名称作为y中的geom_line提供给ggplot。要添加预测列,请执行以下操作:

newdat$pred = predict(SubjEff.model,newdata=newdat)

您还应该geom_line x y与[{1}}中的newdat值对应的geom_line(data=newdat, aes(y=pred, x=Rspan), lineend="round") 值。所以你的代码是:

Rspan

(其中Rspan将(自动)成为newdat中的brew doctor 列。)

答案 1 :(得分:0)

这是一个有2个x值的问题,实际上......它有2个主题值。

线性混合模型是: Mixed.model&lt; - lmer(结果~NsCond + Rspan +(1 |主题),数据=数据))

对于newdat,我最初使用:

  "_GADUShowRewardBasedVideoAd", referenced from:


  _Externs_GADUShowRewardBasedVideoAd_m892979392 in Bulk_Assembly-CSharp_1.o


  _RewardBasedVideoAdClient_ShowRewardBasedVideoAd_m553031711 in Bulk_Assembly-CSharp_1.o (maybe you meant: _Externs_GADUShowRewardBasedVideoAd_m892979392)

哪位给了我:

newdat <- expand.grid(Subject=c(min(Data$Subject),max(Data$Subject)),Rspan=c(min(Data$Rspan), max(Data$Rspan)),NsCond=unique(Data$NsCond))

对于每个Rspan(x),有2个“主题”(1和18)。

我将newdat更改为:

       Subject     Rspan NsCond
1        1 0.2916667   Pink
2       18 0.2916667   Pink
3        1 1.0000000   Pink
4       18 1.0000000   Pink
5        1 0.2916667 Babble
6       18 0.2916667 Babble
7        1 1.0000000 Babble
8       18 1.0000000 Babble
9        1 0.2916667   Loss
10      18 0.2916667   Loss
11       1 1.0000000   Loss
12      18 1.0000000   Loss

结果是:

newdat <- expand.grid(Subject=1,Rspan=c(min(Data$Rspan), max(Data$Rspan)),NsCond=unique(Data$NsCond))

Now it looks good