2012-04-19 3 views
2

Я рассмотрел предыдущие вопросы, как описано в Minor grid with solid lines & grey-color, но это не помогло мне решить мою проблему. Моя проблема связана с xticks. Я хочу, чтобы мои линии сетки появлялись в определенных точках xaxis, а некоторые другие линии сетки отображались в разных точках с разными цветами. Что-то вроде этого:Matlab Сетки сетки с разным цветом на одной оси

plot(x,y,'--g') 
set(gca,'Xcolor',[0 0 0],'Xtick',[12e3,14e3,18e3,23e3,30e3,37e3,57e3], 
set(gca,'Xcolor',[0.5 0.9 0.5],'Xtick',[10e3 16 28e3]); 

Проблема в том, что более поздние ярлыки xtick перезаписывают предыдущие. Я хотел бы сохранить xlabels предыдущих.

ответ

2

Создать вторую ось.

x=-3.14:.1:3.14; 
y=sin(x); 

h=plot(x,y); 
ax1=findobj(gcf,'Type','axes'); %save first axis handle 

%set first stype 
set(gca,'Xcolor',[0 0 0],'Xtick',[-3,-2,-1,1,2,3],'gridlinestyle','-','xgrid','on') 

%create new axis 
ax2=axes('position',get(gca,'position'),'Visible', 'on'); 
set(ax2,'YTick',[],'Xcolor','blue','Xtick',[-2.5 0 2.5],'xgrid','on','color','none'); %color none to make the axis transparent 
set(ax2,'xlim',get(ax1,'xlim')) %resize 2nd axis to match 1st 

Выдает:

Example

+0

??? Ошибка при использовании ==> set Преобразование в double из ячейки невозможно (последнее задание набора). У меня есть значения в xaxis в диапазоне от 10e3 до 80e3, поэтому я попытался использовать cell2mat, но он также не работает – mirage

+0

Если вы скопируете мой пример, работает ли этот пример? что возвращает (ax1, 'xlim')? – Chris

+0

ваш пример работает нормально .. но когда я использую его в своем коде, он выдает сообщение об ошибке из-за xaxis, которые находятся в диапазоне от 10e3 до 80e3. – mirage

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