極座標系でのヒートマップの使用方法について

5 visualizzazioni (ultimi 30 giorni)
soga
soga il 29 Nov 2024
Commentato: soga il 17 Dic 2024
極座標系でのデータの観測回数を可視化するヒートマップを作成したいと考えています。
具体的には、半径0~6を1ずつ分割し、角度0~360°を30°ずつ区切ったエリアごとにデータの観測回数をカウントし、それをヒートマップとして表示したいです。
試したこととして、デカルト座標系への変換を行いヒートマップの作成には成功しましたが、その結果を極座標系に再変換して表示する方法がうまくいきませんでした。
fillsurfなどが極座標系で動作しないことも課題となっています。
この場合、極座標系で直接ヒートマップを作成する方法や、適切に再変換する方法についてアドバイスをいただけると助かります。
% 極座標プロット
figure;
polaraxes;
hold on
colormap(jet)
cb=colorbar;
A = scatter(0,0,1700,'black');
Z = linspace(0-1i,0+1i);
polarplot(Z,'black');
% グラフの調整
ax = gca;
ax.ThetaDir = 'counterclockwise'; % 時計回り
ax.ThetaZeroLocation = 'right'; % 東(右側)を0 MLTに設定
ax.ThetaTick = (0:2:24) * 15; % 1時間刻み
ax.ThetaTickLabel = ({'0時','2時','4時','6時','8時','10時','12時','14時','16時','18時','20時','22時'}); % MLTラベル設定
ax.RLim = [0, 6]; % 半径範囲を設定
ax.RTick = (0:1:6);
ax.RTickLabel = ({'','0RE','1','2','3','4','5'}); % 単位付きRE

Risposte (1)

Kojiro Saito
Kojiro Saito il 10 Dic 2024
Modificato: Kojiro Saito il 10 Dic 2024
ヒートマップを描くheatmap関数が極座標に対応していないので、polarhistogramや、R2024aで導入されたpolarregionなどで描く方法になるかと思います。
polarregionでヒートマップ風のプロットのサンプルは以下のとおりです。とりあえずcountsという変数に観測回数のダミーデータを入れ、値に応じてFaceColorで色をカラーマップjetの該当番号に塗りつぶすようにしています。
figure;
pa = polaraxes;
hold on
cm = colormap(jet);
cb=colorbar(Ticks=0:16:256, TickLabels=0:16:256);
clim([1 256])
A = scatter(0,0,1700,'black');
Z = linspace(0-5i,0+5i);
polarplot(Z,'black');
counts = randi(256, 5, 12);
thetas = linspace(0, 2*pi, 13);
radii = 0:5;
for n = 1:length(thetas)-1
for m = 1:length(radii)-1
pr = polarregion([thetas(n) thetas(n+1)], [radii(m) radii(m+1)], FaceColor=cm(counts(m, n), :));
end
end
hold off
  1 Commento
soga
soga il 17 Dic 2024
本当に助かりました、回答ありがとうございます。

Accedi per commentare.

Prodotti


Release

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!