ggplot2 を使ったバイオリンプロットの作成
ボックスプロット、ドットプロットに続き、データの分布を視覚化する表示方法として「バイオリンプロット」があります。
ボックスプロットは、データの集中している部分が1つの箱にまとめられてしまいます。それに対して、ドットプロットは、ドットの並びで集中度合いを見ることができます。しかしながら、全てのデータをドットとして表示するのも、データサイズが大きくなると現実的ではありません。その場合は、「バイオリンプロット」を使うとデータの集中度は曲線で表されるため、すっきりした見た目にできます。
geom_violin() の使い方
バイオリンプロットに使用するデータは、ボックスプロットやドットプロットと同様に2列のデータです。(サンプルが複数列に並んでいる場合は、 gather() で1列にしておきます。)データの整形ができていれば、使い方は geom_boxplot() と全く同じです。ggplot() に + で続けて、 geom_violin() を指定します。
plot_data <- input_data %>%
gather(starts_with("Sample"), key = "Sample", value = "Read_count")
g <- ggplot(plot_data, aes(x = Sample, y = Read_count))
g + geom_violin()
バイオリンプロットが表示されます。色を指定しない場合は、何も色付けされません。データが密集している部分が膨らんで視覚化されています。
ボックスプロットなどと同様に、色付けすることもできます。ggplot() の aes() に、fill オプションで色付けに使用する列名を指定します。(ここでは Sample 列を指定)
g <- ggplot(plot_data, aes(x = Sample, y = Read_count, fill = Sample))
g + geom_violin() +
theme(axis.text.x = element_text(size = 12),
axis.title.x = element_blank(),
axis.title.y = element_text(size = 18),
legend.position = "none")
色付けして、ラベルなどを調整すると、下記のようになります。
バイオリンプロットとドットプロットを重ねる
ggplot2 を使えば、プロットを重ねて表示することも容易です。上記の色付けされたバイオリンプロットに、ドットプロットを重ねる場合は、 geom_violin() に + で続けて、 geom_dotplot() を指定するだけです。
g + geom_violin() +
geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 0.1, fill = "black") +
theme(axis.text.x = element_text(size = 12),
axis.title.x = element_blank(),
axis.title.y = element_text(size = 18),
legend.position = "none")
ドットプロットの点だけ、黒のままにしたいので、 geom_dotplot() の引数に 「fill = "black"」を指定しています。そのほかは、前回の例と同様です。
重ねた結果は、下記のようになります。
この記事が気に入ったらサポートをしてみませんか?