2016-10-01 6 views
2

私はここに示すような図形を持ち、各色は3番目の変数の値を示しています。私はcolorbarを対応する色と値で作成しようとしました。次のように、この目的のために最初のIは、軸の'Children'Colorget「子供」は一般的に逆の順序ですか? Matlab

curves = get(gca, 'Children'); 
mycolorset = cat(1, curves(:).Color); 

は、その後、私は色の順序(Childrenの順序と同じ)をプロットした順番に比べ逆になることに気づい。だから私は、正しいカラーマップを作るために色にflipudを適用する必要がありました:

set(gcf, 'Colormap', flipud(mycolorset)); 

興味深い事実をプロットブラウザーが正しい順序で曲線を示すということです。

これはMatlabのすべてChildrenの普遍的な機能ですか?これがまったく役に立ちそうな場合は分かりますか?

enter image description here

答えて

2

axesChildrenは(SortMethod is set to 'childorder'またはあなただけの2Dプロットを持っているかの場合)先頭近くの子供たちは、子供たちのリストの終わり近くに子どもたちの上に表示されるように命じています。

axesに複数の2Dプロットを動的に追加する場合、MATLABのデフォルトの動作は古いプロットオブジェクトの上に新しいプロットオブジェクトを配置することです。したがって、Childrenリストの先頭に追加する必要があります。

figure; 
hold on 
plot1 = plot(1:10, 'LineWidth', 10, 'DisplayName', 'plot1'); 
plot2 = plot(10:-1:1, 'LineWidth', 10, 'DisplayName', 'plot2'); 
legend([plot1, plot2]) 

get(gca, 'Children') 

% 2x1 Line array: 
% 
% Line (plot2) 
% Line (plot1) 

enter image description here

あなたが上部に表示されているプロット変更したい場合は、Childrenの順序を変更することができるか、あなただけのあなたのためにこれを行うには便利なuistackコマンドを使用することができます。

enter image description here

この積み重ねビヘイビア

set(gca, 'Children', flipud(get(gca, 'Children'))) % Or uistack(plot1, 'top') 
get(gca, 'Children') 

% 2x1 Line array: 
% 
% Line (plot1) 
% Line (plot2) 

はちょうど axes内のオブジェクトをプロットするために限定されるものではありません。ほとんどのUI要素( uipanelsfiguresなどを含む)の Childrenの順序を変更して、要素のビジュアルスタッキングを判断できます。

関連する問題