極座標系でのヒートマップの使用方法について
63 views (last 30 days)
Show older comments
極座標系でのデータの観測回数を可視化するヒートマップを作成したいと考えています。
具体的には、半径0~6を1ずつ分割し、角度0~360°を30°ずつ区切ったエリアごとにデータの観測回数をカウントし、それをヒートマップとして表示したいです。
試したこととして、デカルト座標系への変換を行いヒートマップの作成には成功しましたが、その結果を極座標系に再変換して表示する方法がうまくいきませんでした。
fillやsurfなどが極座標系で動作しないことも課題となっています。
この場合、極座標系で直接ヒートマップを作成する方法や、適切に再変換する方法についてアドバイスをいただけると助かります。
% 極座標プロット
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
0 Comments
Answers (1)
Kojiro Saito
on 10 Dec 2024 at 10:23
Edited: Kojiro Saito
on 10 Dec 2024 at 10:53
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
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!