2012-04-19 64 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

創建第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

???錯誤使用==>設置 從單元轉換爲double是不可能的(最後一個設置語句)。我有在10e3到80e3範圍內的xaxis值,所以我嘗試使用cell2mat,但它似乎並不工作 – mirage 2012-04-20 11:59:41

+0

如果您複製粘貼我的示例,該示例是否工作? get(ax1,'xlim')返回什麼? – Chris 2012-04-20 15:54:48

+0

您的示例工作正常..但是當我在代碼中使用它時,它會提示由於x軸在10e3到80e3之間的錯誤 – mirage 2012-04-23 12:21:57

相關問題