見出し画像

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()

バイオリンプロットが表示されます。色を指定しない場合は、何も色付けされません。データが密集している部分が膨らんで視覚化されています。

violinplot
バイオリンプロットの例

ボックスプロットなどと同様に、色付けすることもできます。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")

色付けして、ラベルなどを調整すると、下記のようになります。

violinplot
色付けしたバイオリンプロット

バイオリンプロットとドットプロットを重ねる

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"」を指定しています。そのほかは、前回の例と同様です。

重ねた結果は、下記のようになります。

バイオリンプロットにドットプロットを重ねて表示。


この記事が気に入ったらサポートをしてみませんか?