クラスタリング結果 idx をインデックス画像として取扱う方法はいかがでしょうか。
geoshow(idx,cmap,rv);
kmeans 関数の出力の1つ idx にはクラスタリング後のクラス番号が出力されています。cmap で番号に対応する色を直接指定することができます。
cmap = [1,0,0; 0,0,1; 0,1,0];
n行目が数値nの色に対応します。 すなわち、 idx を画像として扱い、要素が1となっている部分は赤色、2となっている部分は青、3となっている部分は緑と表示させることになります。下のサンプルコードでは cmap で色の対応を定義しています。
- [1,0,0] => 赤
- [0,0,1] => 青
- [0,1,0] => 緑
rng default;
% データの読み込み
xfilename =('TS_ave.txt');
yfilename =('TS_var.txt');
x = load(xfilename);
y = load(yfilename);
% データの正規化
X = [x,y];
NX = zscore(X);
opts = statset('Display','final');
% クラスタリング
[idx,C] = kmeans(NX,3,'Distance','cityblock','Replicates',5,'Options',opts);
idx = reshape(idx,72,144);
rv = [0.4 90 180];
ax = worldmap('World');
cmap = [1,0,0; 0,0,1; 0,1,0]; % 色指定
% 1 for [1,0,0] = red;
% 2 for [0,0,1] = blue;
% 3 for [0,1,0] = green
geoshow(idx,cmap,rv); % 色分けして表示
setm(ax, 'Origin', [0 0 0])
land = shaperead('landareas', 'UseGeoCoords', true);
geoshow(ax, land, 'FaceColor', [0.5 0.7 0.5], 'FaceAlpha',[0]);