見出し画像

ggplot2: ボックスプロット

ggplot2 でボックスプロットを作成する例を紹介します。

サンプルデータの生成

前回同様に使用するサンプルデータを生成します。

input_data <- tibble("Sample1" = rnorm(100) + 10,                                                                                                                                                         [25/517]
                     "Sample2" = rnorm(100) + 10)

下記のように、Sample1 と Sample2 について、100個ずつデータを持つテーブルが作成されます。

> input_data
# A tibble: 100 × 2
   Sample1 Sample2
     <dbl>   <dbl>
 1    9.68    9.07
 2   10.1     9.50
 3    9.59   10.8
 4   12.0    10.1
 5   12.2     8.70
 6   10.8     9.77
 7    9.90    8.08
 8   11.1    11.7
 9   13.1    10.9
10   11.6     9.09
# … with 90 more rows
# ℹ Use `print(n = ...)` to see more rows

ボックスプロット用にデータを整形: gather()

以前に紹介したヒストグラムや、散布図のように ggplot() に使用するデータを指定した後、ボックスプロットを作成するには、 geom_boxplot() 関数を使います。

ただ、この input_data のようにサンプルが横に並んだデータは、ボックスプロットに不向きです。ggplot() に渡す前に、数値が1列になるように整形します。下記のように、 gather() 関数を使って、複数のサンプルを指定して縦に集めます。key に指定するのは、集めた後のサンプルの列名です。value に指定するのは、集めた後の数値の列名です。

plot_data <- input_data %>%
  gather(Sample1, Sample2, key = "sample", value = "read_count")

gather 後のテーブルは、下記のような2列のデータになります。もともと、100個の数値が2サンプル分(=100行x2列)だったデータが、100個のデータが縦に2つ並んだ状態(=200行x2列)になります。2列になっているのは、1列目にもともとどちらのサンプルだったかを示す列が作成されるからです。

> plot_data
# A tibble: 200 × 2
   sample  read_count
   <chr>        <dbl>
 1 Sample1       9.68
 2 Sample1      10.1
 3 Sample1       9.59
 4 Sample1      12.0
 5 Sample1      12.2
 6 Sample1      10.8
 7 Sample1       9.90
 8 Sample1      11.1
 9 Sample1      13.1
10 Sample1      11.6
# … with 190 more rows
# ℹ Use `print(n = ...)` to see more rows

ボックスプロットの作成: geom_boxplot()

準備したデータを ggplot() に指定します。aes() にボックスプロットの X 軸と Y軸に使用する列を指定します。サンプルごとに横に並べたいので、X 軸に sample を指定します (x = sample)。 read_count として数値データを、Y軸に使用するので、 y = read_count を指定します。

ggplot(plot_data, aes(x = sample, y = read_count)) + geom_boxplot()

データを指定する ggplot() に + で続けて、描画のための関数を指定します。ボックスプロット用の関数は、 geom_boxplot() です。ボックスプロットが表示されます。

ggplotで作成したボックスプロットの例

ggsave() で保存

表示されたボックスプロットを確認して問題なければ、 ggsave() で保存します。ファイルの拡張子で出力形式を指定できます。

ggsave("boxplot_ggplot_image.png")

上記では、 PNG 形式を指定していますが、  "boxplot_image.pdf" とすれば、PDF 形式でも出力できます。



いいなと思ったら応援しよう!