2012-04-10 8 views
0

Ich möchte die Häkchen-Markierungen auf einer Achse in Dollar ausgedrückt werden ($).Matlab-Plot Dollar-Symbol auf Achse

Ich habe versucht:.

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

Das funktioniert nicht, wenn Sie die Grafik drehen (was die Grafik erstreckt und mehr tickmarks fügt

Ich habe auch versucht, es zu einer Währung Umwandlung mit cur2str, aber das funktioniert auch nicht.

Bitte helfen!

+0

Inwiefern funktioniert es nicht? Kannst du einen Screenshot hochladen? –

+0

@ Li-aungYip Ich kann keinen Screenshot posten, weil es finanzielle Informationen sind. Ich kann das Problem weiter beschreiben: Die Z-Achse zeigt an: 'get (gca, 'ZTickLabel') -50 -40 -30 -20 -10 0 10' Dann, nachdem ich den regulären Ausdruck ausführen: ' sprintf ('$% d |', get (gca, 'ZTickLabel')) $ 45 | $ 45 | $ 45 | $ 45 | $ 45 | $ 48 | $ 49 | $ 53 | $ 52 | $ 51 | $ 50 | $ 49 | $ 32 | $ 48 | $ 48 | $ 48 | $ 48 | $ 48 | $ 48 | $ 32 | $ 32 | ' Aus irgendeinem Grund wandelt es es in diese seltsame Reihe von Zahlen um, und dann auf der Karte lautet die Achse: ' $ 49 $ 48 $ 45 $ 45 $ 45 $ 45 $ 45' – Alec

+0

Sie können Namen anonymisieren , Orte und Zahlen, oder generieren Sie einfach völlig zufällige Daten. Das Wichtigste sind die Achsen in der Grafik. –

Antwort

3

Der Grund, Sie werden immer undefiniertes Verhalten ist, weil XTickLabel ist ein Charakter Array:

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

ans = 

char 

Wenn Sie dies sprintf ‚s %d Formatspezifizierer passieren, es ist eine einzige Dezimalzahl erwartet - nicht eine Reihe von Zeichen - so es wandelt die Zeichen in ihre ganzzahligen Darstellungen und druckt diese.

Um dies zu sehen, versuchen:

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

ans = 

49 

Was tun Sie wirklich wollen, ist, die Zeichen-Arrays wie Zeichen-Arrays zu behandeln:

>> 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) 

Dies hat den Effekt, die Sie wünschen:

enter image description here

+0

Danke. Dies funktioniert, solange Sie den 3D-Graphen nicht drehen und dadurch die Skalierung der Achse ändern. Wenn Sie das tun, verwendet es die falschen Tick-Beschriftungen, um die Ticks darzustellen. Zum Beispiel wird "$ 10 $ 0 $ -10 $ -20 $ -30 $ -40 $ -50" zu "$ -30 $ -40 $ -50", wenn Sie den Graphen aus einem anderen Blickwinkel betrachten (was nicht korrekt entspricht) der Graph). Ich denke, ich werde den Graphen einfach nicht drehen. – Alec

+0

Sie könnten die Graph-Tick-Beschriftungen auf 'ZTickMode = auto' setzen, wodurch die Achsenbeschriftungen zurückgesetzt werden und die Prozedur dann erneut ausgeführt wird. –