Matlab学习手记——标签显示在刻度之间

版权声明:转载请标明出处 https://blog.csdn.net/u012366767/article/details/82894754

问题:Matlab标签和刻度线默认是对齐的,如何将标签设置到刻度线之间?

三个实例。

  • plot类型
clear; clc;
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y)
set(gca, 'yticklabel', [])  % 清空默认的标签 
yLabels = {'one', 'two', 'three', 'four', 'five'};  % 待添加的标签
for i = 1 : length(yLabels)
    text(-0.5, -1.25+0.4 * i, yLabels(i));   % 用文本的方式添加,位置可以自定义
end

得到以下结果:

  • surf类型

surf绘图时,显示出来的网格数量总是比数据维度少1(网格线数量和维度对应),因此,如果想显示出和数据维度一样数量的网格,就必须将数据的行和列都扩充1了。

clear;clc;
load data;
[x_num,y_num]=size(data);
x_coord=1:x_num;
y_coord=1:y_num;
data2(x_coord, y_coord) = double(data); 
data2(:, y_num + 1) = data(:, end);
data2(x_num + 1, 1:end-1) = data(end, :);
data2(x_num + 1, y_num + 1) = data(end, end);
surf(data2);
% contour(data2,'ShowText','on')
axis off   % 不显示坐标轴
% shading interp
view([0,90]);
for i = 1 : y_num
    text(0.25 + i,0.5, num2str(i));
end
for i = 1 : x_num
    text(0.25,0.5 + i, num2str(i));
end

运行代码得到以下图形:

如果不喜欢网格线,只需要将shading interp取消注释即可。

如果是等高线图呢,略有区别。

clear;clc;
load data;
[x_num,y_num]=size(data);
x_coord=1:x_num;
y_coord=1:y_num;
data2(x_coord, y_coord) = double(data); 
data2(:, y_num + 1) = data(:, end);
data2(x_num + 1, 1:end-1) = data(end, :);
data2(x_num + 1, y_num + 1) = data(end, end);
% surf(data2);
contourf(data2,'ShowText','on')
% contour(data2,'ShowText','on')
set(gca, 'xticklabel', [])  
set(gca, 'yticklabel', [])
shading interp
view([0,90]);
for i = 1 : y_num
    text(0.25 + i,0.5, num2str(i));
end
for i = 1 : x_num
    text(0.25,0.5 + i, num2str(i));
end

运行代码得到以下图形:

扫描二维码关注公众号,回复: 3717197 查看本文章

猜你喜欢

转载自blog.csdn.net/u012366767/article/details/82894754