1

Rコースクラスのデータがあります。教授は、基本グラフィックを使用して手動で各行の種類を追加していました。を使ってやりたいと思いggplot2ます。

これまでのところ、さまざまな地域で 'd プロットを作成し、モデルをデータに個別に適合させましfacetggplot。特定のモデルには、プロット内の変数と変数の間に交互作用項があります。scatter plotshungerxgroup/colour

私が今やりたいことは、そのモデルの結果の線をパネルごとにプロットすることです。と を 2 つの係数の合計として使用および定義することでこれを行うことができます(geom_ablineグループのカテゴリ変数には 0/1 の値があり、各パネルでは一部の値のみが 1 で乗算されるため) - しかし、これは簡単ではないようです。slopeintercept

lm instat_smoothで使用したのと同じ式を試してみましたが、うまくいきませんでした。エラーが発生しました。

理想的には、何らかの方法で方程式を に入れ、すべての作業stat_smoothを行うことができると思います。ggplotどうやってそれについて行くでしょうか?

download.file("https://sparkpublic.s3.amazonaws.com/dataanalysis/hunger.csv", 
                  "hunger.csv", method = "curl")
hunger <- read.csv("hunger.csv")
hunger <- hunger[hunger$Sex!="Both sexes",]
hunger_small <- hunger[hunger$WHO.region!="WHO Non Members",c(5,6,8)]
q<- qplot(x = Year, y = Numeric, data = hunger_small, 
            color = WHO.region) + theme(legend.position = "bottom")
q <- q + facet_grid(.~WHO.region)+guides(col=guide_legend(nrow=2))
q

 # I could add the standard lm line from stat_smooth, but I dont want that
 #  q <- q + geom_smooth(method="lm",se=F)

#I want to add the line(s) from the lm fit below, it is really one line per panel
lmRegion <- lm(hunger$Numeric ~ hunger$Year + hunger$WHO.region + 
                  hunger$Year *hunger$WHO.region)

# I also used a loop to do it, as below, but all in one panel
# I am not able to do that
# with facets, I used a function I found to get the colors 

ggplotColours <- function(n=6, h=c(0, 360) +15) {
  if ((diff(h)%%360) < 1) h[2] <- h[2] - 360/n
  hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}

n <- length(levels(hunger_small$WHO.region))
q <- qplot(x = Year, y = Numeric, data = hunger_small, 
         color = WHO.region) + theme(legend.position = "bottom")
q <- q + geom_abline(intercept = lmRegion$coefficients[1], 
         slope = lmRegion$coefficients[2], color = ggplotColours(n=n)[1])
for (i in 2:n) {
  q <- q +  geom_abline(intercept = lmRegion$coefficients[1] + 
            lmRegion$coefficients[1+i], slope = lmRegion$coefficients[2] + 
              lmRegion$coefficients[7+i], color = ggplotColours(n=n)[i])
}
4

1 に答える 1