極座標プロットへの画像の挿入について

17 ビュー (過去 30 日間)
fumikazu sase
fumikazu sase 2021 年 11 月 2 日
コメント済み: fumikazu sase 2021 年 11 月 5 日
極座標プロットしたグラフ内に、画像を挿入することは可能でしょうか。具体的にやりたいことは、レーダーチャートの中心に、薄く画像を挿入したいです。直行座標系ならば、image関数で画像を挿入できるし、alpha値も変えられますが、極座標系にイメージを挿入する関数が見つけられません。よろしくお願いいたします。

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 11 月 3 日
編集済み: Atsushi Ueno 2021 年 11 月 3 日
上記の逆バージョン(極座標⇒直交座標ではなく直交座標⇒極座標)が質問の回答になり得ると考えました。
I = imread('peppers.png'); % 適当な画像(ピーマン・唐辛子・にんにく)
s = round(size(I) * 0.5); % 画像の中央を極座標の中心にする為、画像サイズ/2を得る
[x, y] = meshgrid(-s(2):s(2)-1, -s(1):s(1)-1); % 画像の座標データ
[t, r] = cart2pol(x, -y); % 画像の座標データを直交座標⇒極座標に変換
c = reshape(double(I)./256, [], 3); % 色をuint8(0-255)⇒double(0-1)、画像サイズ⇒RGB3成分に変更
polarscatter(t(:), r(:), 1, c, 'filled', ... % 極座標に画像を描画
'MarkerEdgeColor','none', ... % マーカーのエッジは無色
'MarkerFaceColor','flat', ... % マーカーの面の色はcData(4番目の引数cで設定した値)
'MarkerFaceAlpha',0.1); % マーカーの面の透明度を設定する
hold on;
% 画像の後に適当なグラフを描画
t = 0:0.01:2*pi;
r = 600.*sin(2*t).*cos(2*t);
polarplot(t, r, 'color', 'r', 'LineWidth', 2);
polarscatter関数で描画しました。透明度を設定する為、マーカの輪郭ではなく面で描画しています。
上記の通り、画像に筋が入ってしまう難点があります。なんでだろ
マーカのサイズを大きくしてごまかせますが、そうすると透明度の設定が上手く出来なくなります。
  1 件のコメント
fumikazu sase
fumikazu sase 2021 年 11 月 5 日
これは正に欲しい画像です。完璧な回答をありがとうございました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange極座標プロット についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!