我有一个如此处所示的图形,每种颜色都表示第三个变量的值。我尝试使用相应的颜色和值创建colorbar
。为此,首先get
Color
轴的'Children'
如下:
curves = get(gca, 'Children');
mycolorset = cat(1, curves(:).Color);
然后我意识到颜色的顺序(与Children
的顺序相同)与绘图顺序相反。因此,我必须将flipud
应用于颜色以制作正确的色彩映射:
set(gcf, 'Colormap', flipud(mycolorset));
有趣的是, Plot Browser 以正确的顺序显示曲线。
现在我想知道,这是否是Matlab中所有Children
的通用特性要反转?你知道这个案件有用吗?
答案 0 :(得分:2)
订购Children
的{{1}},以便开头附近的孩子显示在孩子列表末尾附近的孩子的顶部(如果SortMethod
is set to 'childorder'
或者如果你只有2D图。)
如果要动态地将多个2D绘图添加到axes
,MATLAB的默认行为是将新绘图对象放在旧绘图对象之上,因此需要将它们附加到{的开头。 {1}}列表。
axes
如果您想要更改哪个图表显示在其上,您可以修改Children
的顺序,或者您可以使用方便的uistack
命令为您执行此操作。
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)
此堆叠行为不仅限于Children
中的绘图对象。您可以更改大多数UI元素的set(gca, 'Children', flipud(get(gca, 'Children'))) % Or uistack(plot1, 'top')
get(gca, 'Children')
% 2x1 Line array:
%
% Line (plot1)
% Line (plot2)
排序(包括axes
,Children
等),以确定元素的可视堆叠。