Main Content

table データからの地理バブル チャートの作成

地理バブル チャートは、マップ上にデータを重ねて可視化する 1 つの方法です。地理的特性を持つデータについて、これらのチャートは、より必要なコンテキストを提供できます。この例では、ファイルを MATLAB® に table としてインポートして、table 変数 (列) から地理バブル チャートを作成します。次に、table 内のデータを操作して、人口のサイズなどのデータの側面を可視化します。

ファイルを table としてインポート

ニュー イングランドの郡別の人口とライム病の発生頻度の記録を含むサンプル ファイル counties.xlsx を読み込みます。readtable を使用してデータを table に読み取ります。

counties = readtable('counties.xlsx');

基本の地理バブル チャートの作成

ニュー イングランドの郡の位置を示す地理バブル チャートを作成します。table を最初の引数 counties として指定します。地理バブル チャートは、table をその SourceTable プロパティに保存します。table の 'Latitude' 列と 'Longitude' 列を使用して、位置を指定します。チャートは、基となるベースマップと呼ばれるマップの経度と緯度の範囲を自動的に設定して、データにより表される領域のみが含まれるようにします。GeographicBubbleChart オブジェクトを変数 gb に代入します。チャートを作成した後で変更を加えるには、gb を使用します。

figure
gb = geobubble(counties,'Latitude','Longitude');

関数 geobubble によって表示されるベースマップ上では、パンおよびズームインとズームアウトが可能です。

チャート上での郡の人口の可視化

バブル サイズ (直径) を使用して、それぞれの郡の相対人口数を示します。table の変数 Population2010SizeVariable パラメーターの値として指定します。結果の地理バブル チャートでは、バブルのさまざまなサイズによって人口が示されます。チャートには、直径がサイズをどのように示すかを説明する凡例が表示されます。geolimits を使用してチャートの範囲を調整します。

gb = geobubble(counties,'Latitude','Longitude',...
                        'SizeVariable','Population2010');
geolimits([39.50 47.17],[-74.94 -65.40])

geobubble は、SizeLimits プロパティによって指定される値の間でバブルの直径を線形にスケーリングします。

ライム病の郡別の症例の可視化

バブルの色を使用して、ある郡での指定の年のライム病の症例数を示します。この種のデータを表示するために、関数 geobubble ではデータが categorical 値であることが必要です。最初は、table のどの列のデータも categorical ではありませんが、categorical データの列を作成できます。たとえば、関数 discretize を使用して、変数 Cases2010 のデータから categorical 変数を作成できます。Severity という名前の新しい変数は、データを次の 3 つのカテゴリにグループ化します。Low、Medium、High です。この新しい変数を ColorVariable パラメーターとして使用します。これらの変更により、SourceTable プロパティに保存されている table (ワークスペースの元の table のコピーである counties) が変更されます。GeographicBubbleChart オブジェクトに格納された table に変更を加えることで、元のデータへの影響が回避されます。

gb.SourceTable.Severity = discretize(counties.Cases2010,[0 50 100 500],...
                                 'categorical', {'Low', 'Medium', 'High'});
gb.ColorVariable = 'Severity';

未定義データの処理

深刻度の情報をプロットする場合、色の凡例に undefined という 4 番目のカテゴリが表示されます。このカテゴリは、categorical にキャストしたデータに空の値か、または定義されたカテゴリに対し範囲外となる値が含まれている場合に表示されます。カーソルを未定義のバブルに合わせることで、未定義の Severity の値に対する原因を判定します。データ ヒントによって、バブルはライム病の table の 33 行目の値を表していることが示されます。

深刻度に使用されている変数、Cases2010 の値 (ライム病の table の 33 行目にある 12 番目の変数) をチェックします。

gb.SourceTable(33,12)
ans=table
    Cases2010
    _________

       514   

High カテゴリは 100 ~ 500 の値として定義されます。ただし、Cases2010 変数の値は 514 です。この未定義の値を除去するには、この値が含まれるように High カテゴリの上限をリセットします。たとえば、5000 を使用します。

gb.SourceTable.Severity = discretize(counties.Cases2010,[0 50 100 5000],...
                                 'categorical', {'Low', 'Medium', 'High'});

色の変数とは異なり、geobubble はサイズ、経度、緯度の変数で未定義の数 (NaN) を検出すると、その値を無視します。

バブルの色の選択

色のグラデーションを使用して、Low、Medium、High のカテゴリを表します。geobubble は、色を RGB 値の m 行 3 列のリストとして BubbleColorList プロパティに保存します。

gb.BubbleColorList = autumn(3);

バブルの色の並べ替え

高い深刻度を示す色を黄色から赤に変更します。色の順序を変更するには、BubbleColorList プロパティにリストされているカテゴリまたは色のいずれかの順序を変更します。たとえば、最初はカテゴリは Low、Medium、High の順序に並んでいます。関数 reordercats を使用して、カテゴリを High、Medium、Low に変更します。色の凡例でカテゴリが変わります。

neworder = {'High','Medium','Low'};
gb.SourceTable.Severity = reordercats(gb.SourceTable.Severity,neworder);

タイトルの追加

サイズおよび色の変数を使用した地理バブル チャートを表示する場合、チャートには、関連するサイズと色の意味を示すサイズの凡例と色の凡例が表示されます。table を引数として指定すると、geobubble は table 変数名を凡例のタイトルとして自動的に使用しますが、プロパティを使用して別のタイトルを指定できます。

title 'Lyme Disease in New England, 2010'
gb.SizeLegendTitle = 'County Population';
gb.ColorLegendTitle = 'Lyme Disease Severity';

チャート データの調整

ライム病のデータを調べると、多くの症例が発生する場所は人口密度が高い地域であるというトレンドがあります。"一人当たり" の症例数が最も多い場所を見ると、さらに興味深いことがわかります。1000 人当たりの症例数を計算して、それをチャートに表示します。

gb.SourceTable.CasesPer1000 = gb.SourceTable.Cases2010 ./ ...
    gb.SourceTable.Population2010 * 1000;
gb.SizeVariable = 'CasesPer1000';
gb.SizeLegendTitle = 'Cases Per 1000';

すると、バブル サイズは、以前とは異なる情報を伝えます。人口が最も多い地域は、異なる深刻度のレベルに比較的よく追従していました。ただし、人口別に正規化される症例数を調べると、一人当たりのリスクが最も高い地域は、地理的分布も異なります。

参考

| | | | | |

関連するトピック