2016-10-30 2 views
2

Я пытаюсь построить контур, используя мои данные, вычисленные с ограниченными этикетками контурных и цветами и, как указано в верхней панели этого изображения:Как построить контуры с выбранными цветами и отформатированной этикетку

here

Но у меня получился немного другой сюжет (см. График внизу рисунка). Я хочу изменить свой график со следующими тремя характеристиками

  1. Ограничить контур этикетки в 2-х или 3-х знаков после запятой
  2. Удалить участок этикетки в районе, где контуры слишком близко друг к другу.
  3. Участок с двумя цветами, как на первом изображении

Вот мой код:

f=load('fort.15'); 
ngridx=180; 
ngridy=180; 
x=f(:,3); 
y=f(:,4); 
z=f(:,5); 
xlin=linspace(min(x),max(x),ngridx); 
ylin=linspace(min(y),max(y),ngridy); 
[X,Y]=meshgrid(xlin,ylin); 
Z=griddata(x,y,z,X,Y,'linear'); 
[c,h] = contour(X,Y,Z,20); 
set(h,'LineWidth',2,'LineColor',rgb('SteelBlue'),'ShowText','on',... 
     'LabelSpacing',800) 
axis([0 6 -5 7]) 

Я не эксперт в Matlab. Пожалуйста, помогите мне получить нужный сюжет. Я прилагаю свой файл данных here.

ответ

0

Ну, я получил только 2 из 3. DEINE уровне, в котором цвет должен измениться (здесь scl), и вы хорошо идти:

scl = 6.5; % switch color level; 
[c1,h1] = contour(X,Y,Z,scl:max(Z(:)),'Color','r'); 
hold on 
[c2,h2] = contour(X,Y,Z,min(Z(:)):scl,'Color','b'); 
clabel(c2,h2); 
axis([0 6 -5 7]) 

Идея заключается в том, чтобы builed ваш участок от двух контурные объекты, используя команду hold on. вектор scl:max(Z(:)) определяют левелы, которые должны отображаться в первом контуре, и получить красный цвет и без табличек. И подобная логика работает для секущего контура. Если вы хотите скрыть некоторые красные контуры или удалить ярлыки из синих, вам необходимо заменить h2 на функцию clabel с вектором уровней, которые вы хотите скрыть. Если вы будете в комментариях, я уточню свой ответ.

contour

Изменение форматирования в ярлыках, лейблах, вероятно, можно как-то, но это на самом деле не тривиально, поэтому я оставил его в настоящее время.

+0

Thank you friend. Оно работает. Но мне нужно больше синих контурных линий. Что я должен сделать для этого? – Saheer

+0

Изменить 'min (Z (:)): scl' to' min (Z (:)): 0.5: scl', например ... – EBH

Смежные вопросы