高度なグラフ作成

Graph BuilderはBar Chart、Histogram、Scatter Plotなど、複数のGraph Typeを提供しています。 描画したいものが決まり切った形式のグラフで、多少の調整さえできればよい場合には、これらは手軽で使いやすいものです。

ただある程度突っ込んだ分析をしていると、より柔軟に描画内容を制御して、独自のグラフを作りたくなる場面が出てきます。 Custom Graphはそのための機能を提供します。

Custom Graphは、Grammar of Graphicsという理論にもとづいています。 グラフを「データ」「統計変換」「幾何オブジェクト」「座標系」といった構成要素に分解し、これらをレイヤーとして自由に組み合わせることで、以下のような高度な可視化を実現できます:

  • 複数のグラフタイプを1つのグラフに重ね合わせる(例:散布図+回帰直線+信頼区間)
  • データを統計的に変換してから可視化する(例:ヒストグラム、カーネル密度推定)
  • ファセット(小区画)で多次元データを探索する
  • 座標軸のスケールや方向を柔軟に制御する

他のGraph Typeが「完成品の家具」だとすれば、Custom Graphは「組み立て式の素材セット」です。基本的な構成要素を理解すれば、使い方次第でほぼ無限の可視化パターンを作成できます。

Grammar of Graphicsの7つの構成要素

Custom Graphは、以下の7つの要素を組み合わせてグラフを構築します:

  1. Data: 可視化対象のデータセット
  2. Aesthetics: 変数(データセットの列)と視覚属性(位置、色、サイズなど)との対応関係
  3. Layers: 複数の視覚要素を重ねる場合の、その各要素
  4. Statistics: データの統計変換(ビニング、平滑化など)
  5. Scales: データ値から視覚値への変換方法
  6. Coordinates: 座標系(直交座標、軸の入れ替えなど)
  7. Facets: 複数の小グラフをまとめたグラフを作る場合の、その構成

これらを組み合わせることで、データの多様な側面を可視化できます。

Data - データの選択

まずは可視化するデータセットを選択します。ここではAuto MPGデータセット(1970-1982年の自動車398台の燃費データ)を使います。

Aesthetics - 美的要素のマッピング

データの列を視覚属性にマッピングします。最も基本的なのは、2つの連続変数をx軸とy軸にマッピングすることです。

Data: Auto MPG
Aesthetics: x = weight, y = mpg
Geometry: Point

Custom Graphの基本的な散布図:Auto MPGデータセットのweight(車重)とmpg(燃費)の関係を可視化。重い車ほど燃費が悪い負の相関を示す

重い車ほど燃費が悪い、という明確な負の相関が見えます。

色と対応させる

3つ目の変数を色にマッピングすることで、さらに情報を追加できます。 例えばorigin(USA、Europe、Japan)で色分けしてみます。

Aesthetics: x = weight, y = mpg, color = origin

Custom Graphでorigin(原産地)による色分けを追加した散布図:USA・Europe・Japanの3カテゴリごとに異なる色で表示し、地域別の特徴を可視化

サイズと対応させる

horsepowerを点のサイズに対応させます。

Aesthetics: x = weight, y = mpg, color = origin, size = horsepower

Custom Graphで色とサイズを組み合わせた散布図:originで色分けし、horsepower(馬力)で点のサイズを変更。4つの変数を1つのグラフで表現

大きな点ほど馬力が高いことを示します。重くて馬力の高い車は燃費が悪い、という関係が視覚的に理解できます。

Layers - レイヤーの重ね合わせ

レイヤーにより、複数のグラフを重ねられます。 例えば散布図の上にLOESSによる平滑化曲線を追加してみます。

Layer 1: Point (x = weight, y = mpg)
Layer 2: Line + Smooth統計 (method = lm)

Custom Graphのレイヤー機能:散布図の上に回帰直線を重ねて表示。Layersにより複数のグラフタイプを1つのグラフに組み合わせ

青い線が平滑化曲線です。平均的な傾向を曲線で示せます。

Statistics - 統計変換

データをそのまま表示するだけでなく、統計的に変換して表示できます。

ヒストグラム(Binning)

燃費の分布を見るため、データをビン(区間)に分割してカウントします。

Aesthetics: x = mpg
Geometry: Bar
Statistics: Bin (bins = 20)

Custom GraphのBin統計変換によるヒストグラム:mpg(燃費)のデータを20のビン(区間)に分割してカウント。データの分布と偏りを可視化

ほとんどの車が15-30mpgの範囲に集中していることがわかります。分布はやや右に偏っており、燃費の良い車は少数派です。

密度推定

ビンの代わりに滑らかな密度曲線で分布を表現できます。

Aesthetics: x = mpg
Show Density Curve: Yes

Custom GraphのDensity統計変換:mpgの分布を滑らかな密度曲線で表現。ヒストグラムと同じ情報を連続的な曲線で可視化

ヒストグラムと同じ情報を、連続的な曲線で表現しています。

複数グループの密度比較

カテゴリごとに密度曲線を重ねることで、分布の違いを比較できます。 originごとにヒストグラムの上に密度曲線を描いてみましょう。

Layer 1 (Bar):
  Aesthetics: x = mpg, fill = origin
  Geometry: Bar
  Statistics: Bin (bins = 30)

Layer 2 (Line):
  Aesthetics: x = mpg, color = origin
  Geometry: Line
  Statistics: Density (Y Scale = Count)

Custom Graphで複数レイヤーを活用:originごとに色分けしたヒストグラム(Layer 1)に密度曲線(Layer 2)を重ねて表示。グループ間の分布の違いを比較

ポイント:

  • Layer 1 (Bar): fill = origin で棒グラフを色分け
  • Layer 2 (Line): color = origin で密度曲線を色分け、Y Scale = Count でヒストグラムとスケールを合わせる
  • BarとLineで同じ色スケールが使われるため、色が一致します

日本車は高燃費側、米国車は低燃費側に分布のピークがあることが明確です。

Position - 位置調整

複数のカテゴリを棒グラフで比較する際、位置調整が重要になります。

積み上げ棒グラフ

Aesthetics: x = model_year, fill = cylinders
Geometry: Bar
Statistics: Count
Position: Stack

Custom GraphのPosition調整:Stack(積み上げ)を使用した棒グラフ。model_year(年)ごとにcylinders(気筒数)の内訳を積み上げて表示

各年の車種の内訳が積み上げで表示されます。1970年代は8気筒車が多く、後半になるにつれ4気筒車が増えています。

並列棒グラフ

Positionをdodgeに変更すると、横に並べて表示されます。

Position: Dodge

Custom GraphのPosition調整:Dodge(並列)を使用した棒グラフ。cylindersごとに棒を横並びに配置し、各気筒数の推移を比較しやすく表示

各シリンダー数の推移が比較しやすくなります。

Coordinates - 座標系

軸の入れ替え

ヒストグラムや棒グラフを横向きにすると、長いラベルが読みやすくなります。

Aesthetics: x = mpg
Geometry: Bar
Statistics: Bin
Coordinates: Flip

Custom GraphのCoordinates調整:Flip(軸の入れ替え)を使用したヒストグラム。縦軸と横軸を入れ替え、長いラベルの表示や縦スペースの活用に最適

縦軸と横軸が入れ替わり、ヒストグラムが横向きに表示されます。カテゴリ名が長い場合や、縦方向のスペースを有効活用したい場合に便利です。

Facets - ファセット分割

カテゴリごとにグラフを分割して並べることで、サブグループの比較が容易になります。Facetsセクションには2つのタイプがあります:Facet Wrap(単一変数による分割)とFacet Grid(2変数による行列分割)。

Facet Wrap - 単一変数による分割

Facet Wrapは、1つのカテゴリカル変数でデータを分割し、複数のパネルをグリッド状に配置します。 ※変数の尺度(Scale)が名義尺度または順序尺度でなければ分割の基準として指定できません。ここではcylinders変数の尺度を順序尺度(Ordinal Scale)に変更して描画しています。

Aesthetics: x = weight, y = mpg
Geometry: Point
Facets: Type = Facet Wrap (Single Variable)
  Variable = cylinders

Custom GraphのFacet Wrap機能:cylinders(気筒数)ごとに散布図を分割して並べて表示。単一変数によるパネル分割でサブグループの比較が容易

4気筒、6気筒、8気筒それぞれで、重量と燃費の関係を並べて比較できます。8気筒車は全体的に重く、燃費も悪い範囲に集中しています。

別の例として、originで分割することもできます:

Aesthetics: x = weight, y = mpg
Geometry: Point
Facets: Type = Facet Wrap (Single Variable)
  Variable = origin

Custom GraphのFacet機能でoriginごとに分割:europe・japan・usaの3つのパネルを横並びに配置し、地域別の重量と燃費の関係を比較

origineuropejapanusa)ごとにパネルが横並びに配置されます。

Facet Wrapでは、パネルの配置を制御するオプションがあります:

  • Variable: 分割に使用するカテゴリカル変数
  • Columns: 1行あたりのパネル数(オプション)
  • Rows: 列の数(オプション)

Columnsのみを指定すると、行数が自動計算されます。Rowsのみを指定すると、列数が自動計算されます。両方を省略すると、パネル数に応じて最適な配置が計算されます。

Facet Grid - 2変数による行列分割

Facet Gridは、2つのカテゴリカル変数を使って行(Rows)と列(Columns)を定義し、より複雑な比較を可能にします。

Facets: Type = Facet Grid (Two Variables)
  Rows = cylinders
  Columns = origin

Custom GraphのFacet Grid機能:cylinders(行)とorigin(列)の2変数で2次元グリッドを作成。気筒数と原産地の組み合わせごとにグラフを配置して複雑な比較を実現

シリンダー数と原産地の組み合わせごとにグラフが配置されます

Scales - スケールの制御

対数スケール

データの範囲が広い場合、対数スケールが有効です。

Scales: x = log

Custom GraphのScales調整:X軸に対数スケールを適用した散布図。データの範囲が広い場合に有効で、小さい値と大きい値の両方を見やすく表示

色スケール

どのような色を使うかを、色スケールで指定できます。

連続変数、カテゴリカル変数それぞれで使用可能なパレットが定義されています。

Aesthetics: x = weight, y = mpg, color = origin
Scales: Palette = Viridis (Discrete)

Custom GraphのScales - 色パレット:Viridis (Discrete)パレットを適用した散布図。知覚的に均一で色覚多様性に配慮し、印刷やモノクロ表示でも区別しやすい配色

Viridis (Discrete)は、知覚的に均一で色覚多様性に配慮したパレットです。カテゴリカルデータ用に最適化されており、印刷時やモノクロ表示でも区別しやすくなります。他にもPlasma、Inferno、Magmaのdiscrete版が利用可能です。

まとめ

Custom Graphは、7つの要素を自由に組み合わせることで、複雑な可視化を実現できます。 設定項目が多く複雑ですが、広範な要件に対応できます。