2014-02-28 108 views
4

我已經繪製了一個有多條線的圖,並且我注意到當它們爲零時,圖的線與x軸重疊。有沒有一種方法可以讓我將x軸繪製在頂部而不是線條上?當數值爲零時,Matlab線圖與軸重疊

這裏是一個MWE,做同樣的事情(我沒有把我的確切代碼,因爲我的數據集是相當大的)。

xdata=1:1:10; 
ydata=[1;0.8;0.6;0.4;0.2;0;0;0;0;0]; 
line(xdata,ydata) 

後,我繪製的線(對我來說每塊多),我做的其他各種事情軸,所以我得到我所需要的(包括加入第二組軸)。這似乎沒有任何區別是否X軸是否繪製在線的頂部或沒有。

我在網上搜索過,但找不到與此相關的任何內容。

+0

+1包括MWE –

+1

重複http://stackoverflow.com/q/3655256/2647279 –

回答

4

路易斯給出的答案是一個很好的解決辦法,但解決這一問題的正式方法是使用軸對象的layer財產,看到manual。要繪製的數據之上的軸你做

set(gca,'Layer','top') 

要對所有的地塊會自動做到這一點,你可以把下面的行放在startup.m

set(0,'DefaultAxesLayer','top') 

這種你答案不是自己編造的,我只是在comp.soft-sys.matlab many years ago上或多或少地提出同樣的問題後才發現了這個技巧。另見this SO question

+0

+1我不知道那個屬性。似乎要走的路。只是一個挑剔的問題:這不允許你獨立地控制X軸和Y軸的行爲 –

+0

我已經標記這是答案,因爲它是官方的做法,雖然兩者都有效。感謝:D – emmalgale

3

已經繪製的所有線路,繪製於x軸的線與同色軸後:

hold on 
a = axis; %// gives xmin xmax ymin ymax 
cx = get(gca,'Xcolor'); %// color of x axis 
plot([a(1) a(2)], [a(3) a(3)], 'color', cx) 

如果線條也與y軸重合,你還希望該軸出現在上面,添加以下內容:

cy = get(gca,'Ycolor'); %// color of y axis 
plot([a(1) a(1)], [a(3) a(4)], 'color', cy) 
+0

這很好用!非常感謝:) – emmalgale

+0

你錯過了這樣一個事實,即該行也與y軸重疊了左上角的幾個像素;)。似乎有點蠻力的方式來解決問題... –

+0

@BasSwinckels謝謝。我已經添加了y軸部分,儘管OP只要求x軸。是的,這是一個解決方法,而不是一個解決方案。 –