2014-04-15 101 views
0

我必須修改一個圖,但我不想重新創建它,因爲我有.fig。改變顏色傳說matlab

我想簡單地改變維護訂單的圖例的顏色。

,比如我有

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

+0

什麼格式你有沒有數字? – Schorsch

+0

我把它保存了圖jpeg和png – gabboshow

回答

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}) 

這裏,第一把手說什麼時候是這樣,你需要交換這些顏色,以及(感謝伯耆指出我的錯誤)。不是最優雅,但速戰速決與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

+0

謝謝,但是我得到這個錯誤 「使用specgraph.scattergroup時出錯/得到 名字'Color'不是'scattergroup'類的一個實例的可訪問屬性。 – gabboshow

+0

在這種情況下,'get(gca)'(你可能需要孩子或者只是軸的細節),而不是像'CData'。 – nkjt

+0

對不起,但我無法做到這一點...我做了h = get(gca),並且我找到了ColorOrder,但是我不知道如何進行。 – gabboshow