2012-04-10 2 views
0

Я бы хотел, чтобы метки меток на оси представлялись в терминах долларов ($).matlab plot символ доллара на оси

Я пробовал:.

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

Это не работает, когда вы поворачиваете график (который растягивает график и добавляет больше отметки времени

Я также попытался превратить ее в валюту используя cur2str, но это не работает.

Пожалуйста, помогите!

+0

В каком смысле это «не работает»? Можете ли вы опубликовать скриншот? –

+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 | $ 48 | $ 48 | $ 48 | $ 32 | $ 32 | ' По какой-то причине он преобразует его в этот странный набор чисел, а затем на диаграмме ось читает: ' $ 49 $ 48 $ 45 $ 45 $ 45 $ 45 $ 45' – Alec

+0

Вы можете анонимно назвать имена , места и числа, или просто генерировать полностью случайные данные. Главное - оси на графике. –

ответ

3

причина вы получаете неопределенное поведение, потому что XTickLabel является характер массив:

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

ans = 

char 

Когда вы передаете это sprintf «s %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

+0

Вы можете установить метки тика графика на «ZTickMode = auto», который сбрасывает метки меток оси, а затем снова выполняет процедуру. –

Смежные вопросы