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

極座標プロットしたグラフ内に、画像を挿入することは可能でしょうか。具体的にやりたいことは、レーダーチャートの中心に、薄く画像を挿入したいです。直行座標系ならば、image関数で画像を挿入できるし、alpha値も変えられますが、極座標系にイメージを挿入する関数が見つけられません。よろしくお願いいたします。

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 3일
편집: Atsushi Ueno 2021년 11월 3일

0 개 추천

上記の逆バージョン(極座標⇒直交座標ではなく直交座標⇒極座標)が質問の回答になり得ると考えました。
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개)

카테고리

제품

릴리스

R2021b

질문:

2021년 11월 2일

댓글:

2021년 11월 5일

Community Treasure Hunt

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

Start Hunting!