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

조회 수: 4 (최근 30일)
soga
soga 2024년 11월 29일
댓글: soga 2024년 12월 17일
極座標系でのデータの観測回数を可視化するヒートマップを作成したいと考えています。
具体的には、半径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

답변 (1개)

Kojiro Saito
Kojiro Saito 2024년 12월 10일
편집: Kojiro Saito 2024년 12월 10일
ヒートマップを描く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
soga
soga 2024년 12월 17일
本当に助かりました、回答ありがとうございます。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 極座標プロット에 대해 자세히 알아보기

제품


릴리스

R2024b

Community Treasure Hunt

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

Start Hunting!