0

我希望轴上的刻度标记以美元 ($) 表示。

我试过了:

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

这在您旋转图形时不起作用(这会拉伸图形并添加更多刻度线。

我也尝试使用 将其转换为货币cur2str,但这也不起作用。

请帮忙!

4

1 回答 1

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)

这有你想要的效果:

在此处输入图像描述

于 2012-04-10T18:07:12.597 回答