2016-07-29 1 views
0

나는 색상 표 (아래 표시된 그림)로 변환하려는 MATLAB의 플롯을 가지고 있습니다. 이 플롯에는 여러 개의 선분이 있으며 각 선분은 해당 선분과 연관된 특정 값에 따라 색상이 지정됩니다. 예를 들어세그먼트 값으로 정의 된 MATLAB 색상 맵

= 800 라인 1

값이, 특정 색을 555 라인 = 2

값을 플롯 등 특정 색을 플로터.

누구든지이 작업을 수행하는 방법을 알고 있습니까? 내 프로그램에 코드의 일부를 포함 시켜서 아래 그림을 작성했습니다. 코드에서 선의 색을 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 
당신은 6 번째 열에서 각각의 고유 값에 대한 인덱스 색상을 결정하고 여기에 우리가 사용하는 사용자가 선택한 색상 표를 (사용하여 RGB 색상 이러한 인덱스 색상을 변환 할 수

답변

1

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)'의 값이 균등하게 분포되어 있지 않다면 선형 매핑이 없다고 가정합니다. – Suever

+0

@ GradyF.MathewsIv 당신은 colorbar로 이것을 할 수있다. – Suever

관련 문제