ggplot2 を使った作図方法

tidyverse では、 ggplot() 関数を用いて図を作成します。従来の plot 関数と異なり、多次元のデータも、2次元に並び替える必要があるため、多少、慣れが必要です。

まずは、1次元のデータを例に、ggplot の作法を紹介します。(この場合は、並び替える必要はありません。)

> # 適当なデータを100個生成
> input_data <- tibble("Sample1" = rnorm(100))
> 
> input_data
# A tibble: 100 x 1
   Sample1
     <dbl>
 1 -1.64
 2  1.91
 3  0.890
 4  0.178
 5  0.0393
 6 -1.09
 7  0.544
 8  0.387
 9 -2.48
10 -0.309
# … with 90 more rows
>
>
> ggplot(input_data, aes(Sample1)) + geom_histogram(bins = 20)

ggplot() 関数で、どのオブジェクトのどの列を使うかを指定します。その際、列のデータは、aes() の形式で指定します。上記では、count の列を指定しています。

ggplot の後の 「+」 に続く関数で、図の種類を指定します。上記では、 geom_histogram() として、ヒストグラムを指定しています。(bins = 20 は、ヒストグラムの細かさを指定するオプション。)

ウィンドウが開き、下記のような画像が表示されます。

ヒストグラムの例

画像を保存するには、 ggsave() 関数を用います。ファイルの形式は、拡張子 (.png, .pdfなど) から、自動で判断されます。(従来コードのように、いちいちデバイスを指定しなくて済むので楽です。)

ggsave("ファイル名.png")

> ggsave("histogram_image.png")
Saving 7 x 7 in image

オプションなしで、 ggsave 関数を使用すると、その時点で表示されているウィンドウの大きさで画像ファイルが作成されます。上記の場合は、7 インチ x 7 インチのサイズで保存されています。明示的に、サイズを指定する場合は、次のように width, height, unit オプションで指定します。

> ggsave("histogram_image.png", width = 7, height = 7, unit = "in")

その他の1次元データを表示する関数は、 geom_dotplot(), geom_density(), geom_bar() などがあります。 チートシートでは、 one variable の項目で紹介されています。

ggplot2

https://ggplot2.tidyverse.org

 

投稿者:

Atsushi Doi

株式会社セルイノベーター、主任研究員。理学博士。山口大学大学院理工学研究科修了。東京大学医科学研究所ヒトゲノム解析センターの特任助手を経て、株式会社GNIに主任研究員として勤務。その後、株式会社セルイノベーターの立ち上げに参加し、現在に至る。専門は、バイオインフォマティクス、おもにシステムバイオロジー。