12

私はこのggplotを持っています

ggplot(dt.1, aes(x=pctOAC,y=NoP, fill=Age)) +
    geom_bar(stat="identity",position=position_dodge()) +
    geom_smooth(aes(x=pctOAC,y=NoP, colour=Age), se=F, method="loess",show_guide = FALSE,lwd=0.7) +
    theme(legend.position=c(.2,0.8))

ここに画像の説明を入力

dt1 <- structure(list(Age = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("o80", "u80"), class = "factor"), NoP = c(47L, 5L, 33L, 98L, 287L, 543L, 516L, 222L, 67L, 14L, 13L, 30L, 1L, 6L, 17L, 30L, 116L, 390L, 612L, 451L, 146L, 52L), pctOAC = c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)), .Names = c("Age", "NoP", "pctOAC"), row.names = c(NA, -22L), class = "data.frame")

おそらくカーネル密度に似たもので、滑らかな線がゼロより上になるように制限したいと思います。実際、基礎となるデータがあればカーネル密度はまさに私が望むものだと思いますが、集計データしかありません。これを行う方法はありますか?で別のものを使用してみmethod=ましたgeom_smoothが、小さなデータセットがそれを妨げているようです。使用について疑問に思いましstat_functionたが、プロットする適切な関数を見つける方法についてはあまり手がかりがありません。

4

2 に答える 2

14

もう 1 つの可能性はmethod="glm"、スプライン カーブとログ リンクを使用することです (つまり、 も試しmethod="gam"ましたが、複雑さの自動調整により、揺れを減らしすぎました。

library(splines)
ggplot(dt.1, aes(x=pctOAC,y=NoP, fill=Age)) +
    geom_bar(stat="identity",position=position_dodge()) +
    geom_smooth(aes(colour=Age), se=F,
                method="glm",
                formula=y~ns(x,8),
                family=gaussian(link="log"),
                show_guide = FALSE,lwd=0.7) +
    theme(legend.position=c(.2,0.8))

ここに画像の説明を入力

于 2012-11-03T21:09:31.380 に答える
4

どうgeom_density()ですか?

ggplot(dt1, aes(x=pctOAC,y=NoP, colour=Age, fill=Age)) +
  geom_bar(stat="identity",position=position_dodge()) +
  geom_density(stat="identity", fill=NA) +
  theme(legend.position=c(.2,0.8))

ここに画像の説明を入力

于 2012-11-03T21:07:57.730 に答える