Rのggvancedパッケージを使用したスパイダーチャートと並列チャート

Spider and parallel charts using the ggadvanced package in R.

多変数の効果的な可視化のためのRパッケージ

A pretty spider chart. Image by Author.

モチベーション

データ分析プロジェクトの一つで、複数の変数を一度に比較する有効な方法が必要になったことがありました。もちろん、バーチャートが最初に思い浮かびましたが、もっと目を引く、もっと興味深いものが欲しかったのです。ウェブを少しブラウジングした後、私は2つの主要候補に落ち着きました-スパイダーチャートと平行チャート。

その後、私は通常、必要な可視化を生成する専用のRパッケージを見つけるだけですが、今回はこのアプローチでは手がかりがありませんでした。

嘘です-より経験豊富なRユーザーは言うでしょう!そんな可視化は、ラダーチャートのためのfsmbggradar、そして平行プロットのためのggallyなどのパッケージを使用してすでに取得できます。

しかし、変数ごとの値の範囲を同時に表示することも望んでいました。そして、あなたが推測したとおり、前述のパッケージのどれもそれを提供していませんでした。だから、私は自分自身で作ることに決めました:)

ggvancedパッケージ

ggvancedは、スパイダー/レーダーチャートや平行プロットなどの高度な多変数プロットを作成するためのRパッケージです。可視化はggplot2パッケージの上に作成されます。ggplot2パッケージの美しさは、グラフィックの基本文法にあります。この強力なコンセプトにより、コード化する方法さえわかれば、基本的にどんな可視化でも作成できます。

Creating visualizations using the grammar of graphics approach. Image by Author.

パッケージは現在GitHubで利用可能で、devtools::install_github("Ringomed/ggvanced")コマンドをRで入力して、その後library(ggvanced)を呼び出すことによりインストールできます。

チャート構築の詳細に興味がある場合は、最近の記事でスパイダーチャートをスクラッチから構築するロジックを示しましたので、以下のストーリーまたはGitHubの詳細なドキュメントをご覧ください。

ggplot2を使用してRでスパイダーチャートを作成する方法

スパイダー/レーダーチャートのステップバイステップの構築

towardsdatascience.com

それ以外の方のために、以下はパッケージ関数の機能を詳しく説明した例です。

ggspider()でスパイダーチャート

ggspider()関数は、単一の共有軸が[0,1]の範囲にスケーリングされたスパイダーチャート、または表示されるカテゴリごとに実数値が表示される別々の軸を作成します。いくつかの例で関数をテストしましょう。まず、最初の列にグループ識別子、他の列に記述変数が含まれるようにデータをフォーマットする必要があります。ビルトインのmtcarsirisデータセットを使用します。

library(tidyverse)mtcars_summary <- mtcars %>%   tibble::rownames_to_column(var = "group") %>%    tibble::as_tibble() %>%   tail(3)iris_summary <- iris %>%   dplyr::group_by(Species) %>%   dplyr::summarise(across(everything(), mean))library(ggvanced)

自動車の特性の比較

ggspider(mtcars_summary)
Image by Author.

車両間の主な違いがすぐに目立ちます。 FerrariやMaseratiなどのレーシングカーと比較して、Volvoは馬力(hp)がはるかに少なく、四分の一マイル(qsec)をカバーするのにはるかに時間がかかりますが、ガロンあたりのマイル(mpg)でははるかに経済的です。

Iris種間の違いを可視化する

ggspider(iris_summary)
Image by Author.

車の例と同様に、スパイダーチャートはIrisの種間の違いを判断するのに非常に効果的です。 VersicolorとVirginicaの種は、花びらとがくの長さと幅の比率がほぼ同じで、花のサイズだけが異なるため、より似ていることがすぐにわかります。逆に、Setosa種はがくの幅がはるかに大きいです。

レーダーチャート

関数は、引数scaled = TRUEを指定して単一の共通スケールの軸で従来のレーダーチャートを作成することも可能であり、polygon = FALSEを使用して丸い形状に切り替えることもできます。

ggspider(iris_summary, scaled = TRUE, polygon = FALSE)

他の関数引数は、フォントサイズ、ラベルの位置などの外観に関するものであり、詳細については関数のドキュメントを参照してください。

ggparallel()を使用した平行チャート

私は見た目の観点からスパイダーチャートを好むのですが、データセットに多くの変数または観測値がある場合は、平行チャートを使用すると変数間の傾向をより簡単に把握できます。

ggparallel(mtcars_summary)
Image by Author.
ggparallel(iris_summary)
Image by Author.

外観を変更する

上記のチャートは、ベアボーンバージョンにすぎません。もちろん、他のggplot2チャートと同様に、「改造」することができます。以下は、いくつかの変更を行った後のggvancedスパイダーチャートの例です。

Image by Author.

もちろん、付随するコードもご覧ください。お楽しみください! 🙂

library(tidyverse)library(ggvanced)library(sysfonts)library(showtext)sysfonts::font_add_google("Roboto Condensed")showtext_auto()mtcars_gr <- mtcars %>%  tibble::rownames_to_column(var = "group") %>%  tibble::as_tibble() %>%  tail(3) %>%  rename("Miles per Gallon" = mpg, "Cylinders" = cyl,         "Displacement" = disp, "Horsepower" = hp,         "Rear axle\n ratio" = drat, "Weight" = wt) %>%  dplyr::select(1:7)ggspider(mtcars_gr, axis_name_offset = 0.15, background_color = "beige", fill_opacity = 0.15) +  labs(col = "車名", title = "車の特性の比較") +  theme(plot.title = element_text(hjust = 0.475, face = "bold"),        legend.title = element_text(face = "bold"),        text = element_text(family = "Roboto Condensed", face = "bold"))

結論

この投稿では、R言語でより高度なスパイダーチャートや並列チャートを作成する必要性に応えて作成されたggvancedの主要な機能とオプションについて説明しました。

テキストでは、それぞれの機能についていくつかの例が示され、その後、追加のカスタマイズを行った結果を示しています。

このパッケージが私のようにあなたにとっても役立つことを願っています。もしRで実装されたカスタムビジュアライゼーションのリクエストがある場合は、コメントを残していただければ、別の関数を作成するために最善を尽くします。:)

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more