2012-04-10 567 views
0

我希望軸上的刻度線標籤用美元($)表示。matlab繪製軸上的美元符號

我已經試過:

%set(gca, 'ZTickLabel', sprintf('$%d|', get(gca,'ZTickLabel'))); 

這當您旋轉圖(其拉伸曲線並增添了更多刻度線不起作用

我也試着將其轉換爲貨幣使用cur2str,但這並不能工作。

請幫幫忙!

+0

從什麼意義上說「不起作用」?你可以張貼截圖嗎? – 2012-04-10 17:16:25

+0

@ Li-aungYip我無法發佈截圖,因爲它是財務信息。我可以進一步描述問題:Z軸顯示: 'get(gca,'ZTickLabel') -50 -40 -30 -20 -10 0 10' 然後,在運行正則表達式之後: 'sprintf ('$%d |',get(gca,'ZTickLabel')) $ 45 | $ 45 | $ 45 | $ 45 | $ 45 | $ 48 | $ 49 | $ 53 | $ 52 | $ 51 | $ 50 | $ 49 | $ 32 | $ 48 | $ 48 | $ 48 |由於某種原因,它將它轉換成這個奇怪的數字集合,然後在圖表上顯示: '$ 49 $ 48 $ 45 $ 45 $ 45 $ 45 $ 45' – Alec 2012-04-10 17:32:28

+0

您可匿名,地點和數字,或者只是生成完全隨機的數據。重要的是圖中的座標軸。 – 2012-04-10 17:36:02

回答

3

原因你得到未定義的行爲是因爲XTickLabel字符數組:

>> labels = get(gca,'XTickLabel'); 
>> class(labels) 

ans = 

char 

當你通過這sprintf%d格式說明,它期待一個十進制數字 - 而不是一個字符數組 - 因此它的字符轉換爲它們的整數表示和打印這些。

看到這一點,嘗試:

>> sprintf('%d','1') 

ans = 

49 

你真正想要做的是把字符數組一樣的字符數組:

>> labels = get(gca,'XTickLabel') 

labels = 

0 
1 
2 
3 
4 
5 
6 
7 

>> dollar_signs = repmat('$',size(labels,1),1) 

dollar_signs = 

$ 
$ 
$ 
$ 
$ 
$ 
$ 
$ 

>> new_labels = [dollar_signs labels] 

new_labels = 

$0 
$1 
$2 
$3 
$4 
$5 
$6 
$7 

>> set(gca,'XTickLabels',new_labels) 

這有你想要的效果:

enter image description here

+0

謝謝。只要不旋轉3D圖形,就可以工作,從而改變軸的比例。如果你這樣做,那麼它使用錯誤的刻度標籤來表示刻度。例如'$ 10 $ 0 $ -10 $ -20 $ -30 $ -40 $ -50'會變成'$ -30 $ -40 $ -50',如果您從另一個角度查看圖表(它不正確地對應於圖)。那麼我想我不會旋轉圖表。 – Alec 2012-04-10 18:24:01

+0

您可以將圖形刻度標籤設置爲'ZTickMode = auto',它會重置軸標籤,然後再次執行該過程。 – 2012-04-10 18:31:48