FaceAlphaを考慮した色の取得
Mostra commenti meno recenti
お世話になっております。
今、次のように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など、「透明度を設定できないもの」でも使用したいと考えているためです。
よろしくお願いいたします。
Risposta accettata
Più risposte (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 Commenti
交感神経優位なあかべぇ
il 5 Set 2023
plotのMarkerFaceColorは透明色の設定ができないみたいですね...。ただの丸でよければ、rectangleで代替できそうですが、ちゃんとした代替方法はちょっと分からないですね……。
gafakel
il 13 Set 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 Commento
gafakel
il 13 Set 2023
Categorie
Scopri di più su Annotations in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


