matlab在轴上绘制美元符号

matlab在轴上绘制美元符号,matlab,Matlab,我希望轴上的记号标签以美元($)表示 我试过: %set(gca, 'ZTickLabel', sprintf('$%d|', get(gca,'ZTickLabel'))); 当旋转图形时,这不起作用(这会拉伸图形并添加更多记号) 我还尝试使用cur2str将其转换为货币,但这也不起作用 请帮助!您获得未定义行为的原因是XTickLabel是一个字符数组: >> labels = get(gca,'XTickLabel'); >> class(labels) ans

我希望轴上的记号标签以美元($)表示

我试过:

%set(gca, 'ZTickLabel', sprintf('$%d|', get(gca,'ZTickLabel')));
当旋转图形时,这不起作用(这会拉伸图形并添加更多记号)

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


请帮助!

您获得未定义行为的原因是
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)
这具有您想要的效果:


之所以出现未定义的行为,是因为
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)
这具有您想要的效果:


在什么意义上它“不起作用”?你能发布一个截图吗?@Li aungYip我不能发布截图,因为它是财务信息。我可以进一步描述问题:Z轴显示:
get(gca,'ZTickLabel')-50-40-30-20-10
然后,在我运行正则表达式之后:
sprintf('$%d |),get(gca,'ZTickLabel'))2009年4月45日124州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州数据。重要的是ng是图形上的轴。@李昂杰我现在无法上传图像,但它只会显示在我尝试该表达式之前,轴的读数是
-50-40-30-20-10 0 10
,在表达式之后,轴的读数是:
$49$48$45$45$45$45$45
,这肯定不是我想要的。从什么意义上说它“不起作用”?你能发布截图吗?@Li aungYip我不能发布截图,因为它是财务信息。我可以进一步描述问题:Z轴显示:
get(gca,'ZTickLabel')-50-40-30-20-10
然后,在我运行正则表达式后:
sprintf('$%d |',get(gca,'ZTickLabel'))2009年4月45日124州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州数据。重要的是ng是图形上的轴。@李昂杰我现在不能上传图像,但它会简单地显示在我尝试这个表达式之前,轴的读数是
-50-40-30-20-10 0 10
,在表达式之后,轴的读数是:
$49$48$45$45$45$45$45
,这绝对不是我想要的。谢谢。只要你还活着,这就行e不旋转3D图形,从而改变轴的比例。如果这样做,则会使用错误的刻度标签来表示刻度。例如,如果从不同角度(与图形不正确对应)查看图形,则
$10$0$-10$-20$-30$-40$-50
将变为
$-30$-40$-50
。我想我只是不旋转图形。您可以将图形刻度标签设置为
ZTickMode=auto
,这将重置轴标签,然后再次执行该过程。谢谢。只要您不旋转三维图形,这将起作用,从而更改轴的比例。如果您这样做,则它将使用错误的刻度标签来重新显示输入刻度。例如,如果从不同角度(与图形不正确对应)查看图形,则
$10$0$-10$-20$-30$-40$-50
将变为
$-30$-40$-50
。我想我不会旋转图形。您可以将图形记号标签设置为
ZTickMode=auto
,这将重置轴标签,然后再次执行该过程。