改变颜色传奇matlab

时间:2014-04-15 13:43:26

标签: matlab legend figure

我要修改一个数字,但我不想重新创建它,因为我有.fig。

我想简单地更改维护订单的图例的颜色。

例如我有

blue marker -> cluster 1

green marker -> cluster 2

red marker -> cluster 3

light blue marker -> cluster 4

magenta marker -> cluster 3

我想反转绿色和浅蓝色

blue marker -> cluster 1

light blue marker -> cluster 2

red marker -> cluster 3

green marker -> cluster 4

magenta marker -> cluster 5

有没有办法做到这一点而不再创造这个数字?

ps它是一个散点图

enter image description here

你可以在这里下载图: https://drive.google.com/file/d/0B3vXKJ_zYaCJMS1feHFSaHp4R28/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

如果您更改了地块的Color设置,则应自动更改图例:

h = get(gca,'Children');
c = get(h,'Color');

c应该是一个颜色的单元格数组。假定句柄与图例的顺序相同,这应该有效:

set(h(2),'Color',c{4})
set(h(4),'Color',C{2})

处理顺序可以根据你创建数字的方式而改变,所以你可能只想仔细检查你先交换哪两个。


您需要更改的值取决于绘图的确切类型。通常只需要挖掘轴的Children来找到要改变的正确位。

在你的情况下:

a = get(gca, 'Children');

q = get(a,'CData');
% there are six handles here
% I just looked at the CData and decided which to swap
set(a(3),'CData',q{5})
set(a(5),'CData',q{3})

在这里,第一个句柄说明了什么点,所以你也需要交换这些颜色(感谢Hoki指出我的错误)。不是最优雅的,而是快速修复ismember

col = q{1};
col2 = col;
n3 = ismember(col, q{3},'rows');
n5 = ismember(col, q{5},'rows');
col2(find(n3),:)=repmat(q{5},[length(find(n3)) 1]);
col2(find(n5),:)=repmat(q{3},[length(find(n5)) 1]);
set(a(1),'CData',col2);

enter image description here