3

最後の 2 つの点が最新でないいくつかのプロットに取り組んでいます。結果として得られる低い数字は、私の平滑化線を引き下げます.

dat1<-data.frame(vals=c(30,40,50,30,40,50,30,10,5),
                 q.year=c("q1 09", "q2 09", "q3 09", "q4 09", "q1 10", "q2 10", "q3 10", "q4 10", "q1 11"),
                 dummy=rep("g1", 9)
)
dat1$q.year<-factor(dat1$q.year, unique(dat1$q.year))

ggplot(dat1, aes(x=q.year, y=vals, group=dummy))+
  geom_point()+
  geom_line()+
  geom_smooth(method="loess", se=FALSE, lty=2)

2 つの低点なしでスムーズにプロットしたいと思います。サブセットでこれを行うことができます:

gg1<-ggplot(dat1, aes(x=q.year, y=vals, group=dummy))+
  geom_point()+
  geom_line()+
  geom_smooth(data=subset(dat1, q.year %in% levels(q.year)[1:7]),
              method="loess", se=FALSE, lty=2)
print(gg1)

しかし、新しいデータ (つまり、gg2<- gg1 %+% someMoreData) でプロットを再利用する場合、新しいデータ セット (someMoreData) をサブセット化するために別の行を追加する必要があります。

これを行うより良い方法はありますか?既にプロットに渡されたデータを参照できますか?

質問が明確でない場合はお詫びします - 必要に応じて更新します

ありがとう

4

1 に答える 1

2
fun <- function(val,fac,n) {val[fac %in% tail(levels(fac),n)] <- NA; val}

gg1a <- ggplot(dat1, aes(x=q.year, y=vals, group=dummy))+
  geom_point()+
  geom_line()+
  geom_smooth(aes(x=q.year,y=fun(vals,q.year,2)),
              method="loess", se=FALSE, lty=2)
print(gg1a)
#Warning message:
#Removed 2 rows containing missing values (stat_smooth).

dat2<-data.frame(vals=c(50,40,50,30,40,50,30,10,5,5),
                 q.year=c("q1 09", "q2 09", "q3 09", "q4 09", "q1 10", "q2 10", "q3 10", "q4 10", "q1 11","q2 11"),
                 dummy=rep("g1", 10)
)
#make sure that your factor is ordered, 
#otherwise it gets reordered by ggplot according to levels
dat2$q.year <- factor(as.character(dat2$q.year),levels=as.character(dat2$q.year),ordered = TRUE)

gg1a %+% dat2
#Warning message:
#Removed 2 rows containing missing values (stat_smooth).
于 2013-04-04T16:22:29.067 に答える