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

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

Réponse acceptée

Atsushi Ueno
Atsushi Ueno le 3 Nov 2021
Modifié(e) : Atsushi Ueno le 3 Nov 2021
上記の逆バージョン(極座標⇒直交座標ではなく直交座標⇒極座標)が質問の回答になり得ると考えました。
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 commentaire
fumikazu sase
fumikazu sase le 5 Nov 2021
これは正に欲しい画像です。完璧な回答をありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!