2016-04-19 29 views
0

y軸上にカウントを持つggplot2を使用して、積み重ねたヒストグラムを簡単に作成できます。私が望むのは、このプロットを密度の点で変換することです。私は、エイム(y = .. density ..)をgeom_histogramレイヤーに追加することでこれを行うことができます。 ggplotが行うことは、個々のデータ系列の密度をそれぞれ合計1の領域にプロットすることです。あなたが1つのヒストグラムで4データ系列を積み重ねているのであればバーの総面積は4ggplot2積み重ねヒストグラム - 濃度プロットに変換

私は何をした後だが密度で積み重ねられたヒストグラムをプロットすることであるが、計算に考慮されるデータ系列のすべてを持つことになります密度。言い換えれば...私は、積み重ねられたヒストグラムが、カウントヒストグラムと同じ比率の棒を持つようにしたい。

+0

ヘルプ(http://stackoverflow.com/a/5965451/496488)。 – eipi10

答えて

1
library(ggplot2) 
dtDataset = data.frame(
    V1 = c('a','b'), 
    V2 = runif(20) 
) 

ggplot(dtDataset) + 
    geom_density(aes(x = V2, group = V1), position = 'stack') 
0

私は言う、ビン幅= bwを計算し、nは、データポイントの数である(..count..)/(n*bw)すべきy変数を、設定が含まれ、これを行うための方法を発見しました。

次に各ビンがそれぞれに含まれる点の割合に応じて着色され

require(ggplot2) 

    set.seed(1234) 
    x1 <- rnorm(10000, 0, 1) 
    x2 <- rnorm(90000, 1, 1) 
    X <- data.frame(x = c(x1, x2), 
        Class = as.factor(c(rep(1, length(x1)), rep(2, length(x2))))) 

計算nおよびビン幅

n <- dim(X)[1] 
    bw <- 3.49 * sd(X[, "x"]) * dim(X)[1]^(-1/3) ## binwidth using Scott's rule. 

プロット

p1 <- ggplot(data = X, aes(x = x, bw = bw, n = n)) + 
      geom_histogram(aes(y = (..count..)/(n * bw), fill = Class), 
          binwidth = bw) + 
      geom_density() 

    print(p1) 

を生成し、いくつかのおもちゃのデータを生成します黒線で示される濃度の定義に適合します。私たちは、[再現可能な例]を提供することで、あなたを助ける

multi-class histogram

+0

上記のコードを実行する木星ノートブックは、[ここ](https://github.com/gkiar/happy-plotter/blob/master/R/Multiclass_Histograms.ipynb)にあります。 – MrAesthetic

関連する問題