2017-06-28 3 views
1

私はggplot2に集計データを作成しようとしています。これは、事前に計算されたカウントで構成されています(生データは大きすぎてプロットに時間がかかります)。以下の例のデータセット。ここViolin Plot (geom_violin) with aggregated values集計データのggplot2でバイオリンプロットを作成するには?

data <- data.frame(category = rep(LETTERS[1:3],3), 
       value = c(1,1,1,2,2,2,3,3,3), 
       count = c(3,2,1,1,2,3,2,1,3)) 

ソリューションは、不正確な密度を与え、正常に動作するようには思えません。私がその方法を使ってプロットし、データセット全体でプロットすることと比較すると、プロットは大きく異なって見えます。

誰でも集計データをプロットする方法を知っていますか?

+1

メソッドが機能しないデータセットなしではトラブルシューティングが難しい。より良い例がありますか? –

+0

また、集計プロットと生値プロットの例が役立ちます。 – CPak

答えて

2

表示されている違いは、密度の計算方法の違いが原因である可能性があります。ここでは、与えた例である:

data <- data.table(category = rep(LETTERS[1:3],3), 
        value = c(1,1,1,2,2,2,3,3,3), 
        count = c(3,2,1,1,2,3,2,1,3)) 
data[, count2 := count/sum(count), by = category] 
ggplot(data, aes(x = category, y = value, weight = count2)) + geom_violin() 

enter image description here

今ここにではなく数よりも、繰り返される値と同じデータである。

val2 <- unlist(sapply(1:length(data$value), 
         function(x) rep(data$value[x], 
             data$count[x]))) 
cat2 <- unlist(sapply(1:length(data$value), 
         function(x) rep(data$category[x], 
             data$count[x]))) 

dat2 <- data.table(cat2, val2) 
ggplot(dat2, aes(x = cat2, y = val2)) + geom_violin() 

これはプロットを生成:enter image description here

違いはあまりありません。また、密度の計算方法にも起因している可能性があります。

関連する問題