2017-08-28 86 views
3

我試圖調整y軸,並改變它從[0 2.5],並表明它具有通過的1000在情節的重標度Y軸

顯然設置與ylim=([0 25])沒有按極限的一個因素相乘沒有工作,我找不到辦法做到這一點。

image

使用繪製:

AveTime = 1.0e+03 * [0.0020, 0.0291, 0.1279, 0.3061, 2.0599]; 
STDtime = [0.0519, 0.0117, 0.0166, 0.0071, 0.0165]; 
errorbar([10,25,50,75,100], AveTime, STDtime); 
+2

你最好的選擇是div將你的Y值加1000,繪製出來,然後在軸標籤中指出(你可以使用['ylabel'](https://mathworks.com/help/matlab/ref/ylabel.html))。注1:在某些情況下(單位像時間一樣),當你給單位貼上標籤時,你可以簡單地使用'ms'而不是's'(或相關的子單位)。注2:你不是指範圍[0 2.5](而不是25作爲上限)? – Hoki

+0

@Hoki實際上是一個好主意。是的,我錯過了複製粘貼的''。非常感謝! –

+0

您可以將其更改爲[0 2.5],但您打算如何顯示「*滴答必須乘以係數1000」。科學計數法? –

回答

5

我相信這是你需要什麼,它應該Matlab的版本一起使用> = 2014B:

ax = gca; 
ax.YAxis.Exponent = 3; 

下面是一個代碼示例:

clear; 
close all; 
clc; 

x=1:10:1000; 
y=3*x; 
plot(x,y); 
ax = gca; 
ax.YAxis.Exponent = 3; 

和劇情:

enter image description here

+4

比必須修改數據或刻度標籤。你應該確定它只適用於HG2,所以對於Matlab版本> = 2014b。 – Hoki

+1

我看到有人已經爲我做了:)。 – David

3

這裏是一個解決辦法:
獲取YTick,通過1000分化他們,並將它們設置爲YTickLabel

set(gca,'YTickLabel',get(gca,'YTick')/1000); 

在MATLAB R2014b或更高版本,你也可以使用:

ax=gca; 
ax.YTickLabel= ax.YTick/1000; 

不利的一面,如在評論中提到Hoki

這是好事,但只有爲圖的最終呈現(如果你只是想看/打印它)。一旦您覆蓋了YTickLabel,它們的模式將從auto更改爲manual,並且任何縮放/平移或軸限制的修改都將保留現有刻度標籤,該標籤在圖形修改後可能會過時。

+0

這比評論中的建議要好。感謝你們倆。 –

+0

這很好,但只適用於圖形的最終*渲染(如果你只是想看/打印它)。一旦重寫了'YTickLabel',它們的模式從'auto'變爲'manual',任何縮放/平移或軸限制的修改都會保留現有刻度標籤,這些刻度標籤在修改圖形後可能會過時。 – Hoki

+0

@Hoki同意這一點:/你有什麼建議?我最初建議科學記數法 –