FaceAlphaを考慮した色の取得
Afficher commentaires plus anciens
お世話になっております。
今、次のようにfigureを作成し、またPatchを実行したとします。
figure(100)
plt=plot(0.5,2.5,"o","MarkerFaceColor",[0.2500 0.0600 0.2900],"Color",[0.2500 0.0600 0.2900],"MarkerSize",18);
pat=patch([1,1,3,3],[0,2,2,0],[0.2500 0.0600 0.2900],"FaceAlpha",0.3);
axis([0 3 0 3])
set(gca,"XTick",[0 3])
set(gca,"YTick",[0 3])
grid on
ここで、pltとpatには同じ色(紫)を与えています。ですがpatの方は透明度が0.5であるため少し透明になっており、見た目では少し薄い紫色に見えます。
このとき、このpatとして表示されている色をRGB3要素として取得する方法はありますでしょうか?これは、この今見えているpatの色をpltやrectangleなど、「透明度を設定できないもの」でも使用したいと考えているためです。
よろしくお願いいたします。
Réponse acceptée
Plus de réponses (2)
plotもrectangleも、color配列の4要素目に、透明度が入力できます。
plot([0,1],[0,1],'Color', [0.2500 0.0600 0.2900 0.3]);
hold on;
rectangle('Position', [0,0,0.5,0.5], 'FaceColor', [0.2500 0.0600 0.2900, 0.3]);
また、おそらくMATLABにはスポイトに匹敵するような機能はないので、スポイトを使用したい場合は、外部ツールを使うことになると思います。(Windowsであれば、Microsoftが出しているPowerToysのColorPickerがオススメです。)
2 commentaires
交感神経優位なあかべぇ
le 5 Sep 2023
plotのMarkerFaceColorは透明色の設定ができないみたいですね...。ただの丸でよければ、rectangleで代替できそうですが、ちゃんとした代替方法はちょっと分からないですね……。
gafakel
le 13 Sep 2023
getframe関数で、Figureのフレームをイメージデータとして取り出す事が出来ました。
figure; hold on
plt=plot(0.5,2.5,"o","MarkerFaceColor",[0.2500 0.0600 0.2900],"Color",[0.2500 0.0600 0.2900],"MarkerSize",18);
pat=patch([1,1,3,3],[0,2,2,0],[0.2500 0.0600 0.2900],"FaceAlpha",0.3);
axis([0 3 0 3]);
F = getframe(gcf) % 指定された Figure をキャプチャ
mycolor = F.cdata(250,250,:); % Patchのピクセル値(描画されたRGB値)を取得
plot(0.5,1.0,"o","MarkerFaceColor",mycolor,"Color","k","MarkerSize",50); % 同色か確認
因みに、Figure⇒Axis⇒グラフィックオブジェクト⇒と目的とする情報まで辿っていく事も可能ですが、プロパティの数が非常に多くて辿り着くのが大変です。グラフィックス オブジェクトの階層 - MATLAB & Simulink - MathWorks 日本
1 commentaire
gafakel
le 13 Sep 2023
Catégories
En savoir plus sur Annotations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


