当前位置: 代码网 > it编程>编程语言>C/C++ > matlab绘制双坐标轴

matlab绘制双坐标轴

2024年07月28日 C/C++ 我要评论
在MATLAB绘制plot或contour等图时,有时候会希望多开启一个坐标轴对数据进行多重解释,以下介绍在绘图时如何多开启一条坐标轴。

文章目录


前言

在matlab绘制plot或contour等图时,有时候会希望多开启一个坐标轴对数据进行多重解释,以下介绍在绘图时如何多开启一条坐标轴。


一、生成数据

首先生成一维或二维随机数组,使用rand函数

data_contour = rand(40, 20)*100; % 生成0-100以内的40×20的矩阵,用于绘制contourf
data_plot = rand(1, 20); % 生成0-1以内的一维数组,用于绘制plot

二、绘图

绘制plot和contourf多开启一条坐标轴的步骤是相同的,只需要将plot替换成contourf即可。

1.生成右侧y轴

首先生成plot图

figure
plot(data_plot);
grid on;
hold on;

生成的plot图如下图所示

假设开启的右边y轴是以数据的10倍的来表示,代码如下

ylims = get(gca, 'ylim'); % 获取左边y轴范围
yyaxis right; % 打开右边y轴
yticks(ylims(1) : 0.1 : ylims(end));
yticklabels(ylims(1) * 10 : 0.1*10: ylims(end)*10); % 将右边坐标轴标签修改
ylim(ylims); % 限定y轴范围
set(gca, 'ycolor','k'); % 将坐标轴颜色调成黑色,可根据自身需要修改

画出来的图如下

这样就实现了用右边坐标轴对数据进行多重解释,实际应用中可根据自身需求修改右坐标轴的范围。

2.在底部多生成一个x轴

如果需要多生成一个x轴对数据进行多重解释,可以考虑在底部多生成一条x轴。接着上述代码继续往下写。

hold on;
fontsize = 10; % 定义字体大小
gca % 暂时不能去除此代码,去除后第二条x轴与第一条x轴在x方向上位置不一致
ax1 = gca;
ax2=axes('position',get(ax1,'position'),...
    'xaxislocation','bottom',...
    'color','none',...
    'xcolor','k','ycolor','none'); % 绘制一根与原x轴位置一致的x坐标轴
xlim([20 40]) % 限定范围
set(gca, 'fontname', 'times new roman','fontsize',fontsize, ...
    'fontweight','bold', 'xdir', 'reverse'); % 修改坐标轴字体类型、大小、加粗,对x方向反转,可不进行此步骤
axpo=get(ax1,'position'); % 获取第二条坐标轴位置信息
axpo(2)=axpo(2)-0.06; % 以当前x轴位置为基准,在y方向向下移动,可根据实际修改
set(ax2,'position',axpo) % 调整第二条坐标轴的位置

生成的坐标轴如下图所示

实际应用时,可以根据自身需求对第二条坐标轴进行更多修饰,方法与设定原坐标轴的方法一致。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了matlab如何多开启一条y轴或x轴,提供了代码的demo,对图片的更多修饰可参考以后的文章或根据自身需求修改。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com