我要修改一个数字,但我不想重新创建它,因为我有.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它是一个散点图
你可以在这里下载图: https://drive.google.com/file/d/0B3vXKJ_zYaCJMS1feHFSaHp4R28/edit?usp=sharing
答案 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);