How do I change axes scale in a surface plot by a predefined factor?

74 次查看(过去 30 天)
Hello,
I have a surface plot -
on x axis - [0,1,2.... 15];
on y axis - [0,1,2,...50];
I'd like to change the axes scale by multiply these two vector by a factor (different one on each axis), for exmaple by 12.5578 and thus changing only the axes lables.
I'm familair with XtickLabel and YTickLabel but I think it's less applicatble, mainly becaue this factor is not round.
Real life example - for instance when you want to change reperesntation from pixles to real units without changing the data.
Any thoughts?

采纳的回答

Iron1759
Iron1759 2021-1-14
Thanks, it works..

更多回答(1 个)

Mischa Kim
Mischa Kim 2021-1-3
Iron, if it just about changing the labels simply use xticklabels(). See the example below:
x = linspace(-10,10,200);
y = cos(x);
plot(x,y)
xticklocs = [-3*pi -2*pi -pi 0 pi 2*pi 3*pi];
xticks(xticklocs);
myfac = 10; % this would be your 12.5578
xticklabels(cellstr(num2str(xticklocs'*myfac)));
  4 个评论
Iron1759
Iron1759 2021-1-9
I don't know if it's only me but I didn't quite get it.
xticklocs/yticklocs are both 1D arrays after 'conversion' from nanometers (that I want to present) to a different unit.
Then, I don't get a display of my surface (after I used meshgrid).
xticklabels(cellstr(num2str(x))); % 0:10:200
yticklabels(cellstr(num2str(y))); % 0:10:200
Multi_x = multiplier_x; % = ~11.93
Multi_y = multiplier_y; % = ~ 3.98
xticklocs = x./Multi_x;
yticklocs = y./Multi_y;
xticks(xticklocs);
yticks(yticklocs);
Mischa Kim
Mischa Kim 2021-1-10
See this example:
x = linspace(-10,10,200);
y = cos(x);
figure(1)
plot(x,y)
xticklocs = [-3*pi -2*pi -pi 0 pi 2*pi 3*pi];
xticks(xticklocs);
figure(2)
plot(x,y)
xticklocs = -400:80:400; % these are the nice numbers
myfac = 400/(3*pi);
xticklabels(cellstr(num2str(xticklocs.')));
xticks(xticklocs/myfac);
If this does not help, share your code so I can provide specific input.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Axis Labels 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by