2016-07-29 17 views
0

私はカラーマップ(以下に示すプロット)に変換したいMATLABのプロットを持っています。このプロットにはいくつかの線分があり、線分に関連する特定の値に基づいて各線分を色付けします。例えばセグメント値で定義されたMATLABカラーマップ

:行1 = 800の

値、プロット特定色

ライン2 = 555、プロット特定色 の値...など。

誰でもこれを行う方法を知っていますか?私は私のプログラムに以下のプロットを作っているコードの部分を含めました。コードでは、線の色をElementMap(i、6)に依存させたいと思います。どのラインセグメントがより高い価値を持っているかを知ることができれば、色について特に好みはありません。

おかげ

enter image description here

%% Plot   

for i = 1:length(ElementMap) 
    if ElementMap(i,6) < 1000 
     x = [ElementMap(i,1);ElementMap(i,3)]; 
     y = [ElementMap(i,2);ElementMap(i,4)]; 
     plot(x,y,['-','b','o']); 
     hold on; 
    end 
end 

答えて

1

あなたは6列でそれぞれのユニークな値のインデックスカラーを決定し、その後、あなたが選んだのカラーマップを使用してRGBの色にこれらのインデックス付きの色を変換することができ(ここで私たちが使用しますparula)。次に、各行をプロットするときにColorプロパティを指定します。このアプローチで

% Get indices to use for the colormap 
[~, ~, ind] = unique(ElementMap(:,6)); 

% Create a colormap of the correct size 
cmap = parula(max(ind)); 

% Create a color for each plot 
colors = ind2rgb(ind, cmap); 

% Now plot everything 
for k = 1:size(ElementMap, 1) 
    x = [ElementMap(k,1);ElementMap(k,3)]; 
    y = [ElementMap(k,2);ElementMap(k,4)]; 
    plot(x,y, 'Marker', 'o', 'LineStyle', '-', 'Color', colors(k,:)); 
    hold on 
end 

、色がないであろうデータの直線必要規模が、ElementMap(:,6)内の各一意の値が異なる色によって表される小さい値が大きな値と区別されます。

一意の値を持つすべてのプロットを気にしない場合は、となります。は、色と値の線形マッピングを取得します。

values = ElementMap(:,6); 

% Assign an index to each 
ind = gray2ind(mat2gray(values)) 

% Create the colormap 
cmap = parula(numel(unique(inds))); 

% Create a color for each plot 
colors = ind2rgb(ind, cmap); 

% Now plot everything 
for k = 1:size(ElementMap, 1) 
    x = [ElementMap(k,1);ElementMap(k,3)]; 
    y = [ElementMap(k,2);ElementMap(k,4)]; 
    plot(x,y, 'Marker', 'o', 'LineStyle', '-', 'Color', colors(k,:)); 
    hold on 
end 

% Now create a colorbar 
colorbar() 

% Set the range of the colorbar 
set(gca, 'CLim', [min(values), max(values)]) 
+0

ありがとう。これは私が探していたものです。フォローアップの質問:プロットにカラーバーを配置したいとします。カラーバーの値をElementMap(:、6)の値と関連付けるにはどうすればよいですか? –

+0

@ GradyF.MathewsIvこれは、(ElementMap(:、6)の値が等間隔でない限り)この2つの間に線形マッピングがあると仮定します。 – Suever

+0

@ GradyF.MathewsIvあなたはカラーバーでこれを行うことができます – Suever

関連する問題