🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
问题描述
运用matlab画x-y图。想用matlab画一个3Y轴x-y图,如下图所示:
一共五组Y轴数据,1-3组共用y1轴(图中蓝色线),4组用y2轴(图中粉色线),5组用y3轴(图中红色线)。5组Y轴数据对应同一组X轴数据,如何用matlab实现?谢谢
(备注 我会用yyaxis画2y图 但是第三条y不会了 求*助)谢谢
%%y-y图
clc;clear;close all;
num1=xlsread("mean-021m","Sheet1");
x1=num1(:,1);
y1=num1(:,2);
num2=xlsread("mean-021m","Sheet2");
x2=num2(:,1);
y2=num2(:,2);
num3=xlsread("mean-021m","Sheet3");
x3=num3(:,1);
y3=num3(:,2);
num4=xlsread("mean-021m","Sheet4");
x4=num4(:,1);
y4=num4(:,2);
num5=xlsread("mean-021m","Sheet5");
x5=num5(:,1);
y5=num5(:,2);
% 绘制曲线
figure;
yyaxis left
plot(x1,y1,'--','LineWidth',1,'MarkerSize',3,'MarkerFaceColor',[70/255,130/255,180/255]);
hold on;
plot(x2,y2,'-.','LineWidth',1,'MarkerSize',3,'MarkerFaceColor',[70/255,130/255,180/255]);
hold on;
plot(x4,y4,'.','LineWidth',1,'MarkerSize',3,'MarkerFaceColor',[70/255,130/255,180/255]);
hold on;
set(gca,'ycolor',[70/255,130/255,180/255]);
xlabel('X-Position(m)');
ylabel('Y=0.21 Line Radial Distribution (V%)');%Root mean square error of methane mass fraction
yyaxis right
plot(x5,y5,'LineWidth',0.5,'MarkerSize',3,'MarkerFaceColor',[240/255,128/255,128/255]);
set(gca,'XTick',-0.06:0.02:0.06)
xlim([-0.06 0.06])
set(gca,'ycolor',[240/255,128/255,128/255]);
ylabel('Mean Static Temperature (K)')
box on;
grid on;
hold on;
legend('Mean Mass Fraction of CH_4 ','Mean Mass Fraction of O_2','Mean Mass Fraction of CO_2','Mean Static Temperature (K)');
legend('boxoff')
如上问题有来自我自身项目开发,有的收集网站,有的来自读者…如有侵权,立马删除。
解决方案
如下是上述问题的解决方案,仅供参考:
在MATLAB中绘制具有三个Y轴的X-Y图,你可以使用yyaxis
函数结合plot
函数来实现。你已经有了两组Y轴数据的绘制代码,只需要添加第三组Y轴数据即可。以下是如何添加第三组Y轴数据并绘制3Y轴X-Y图的示例代码:
% 假设你已经有了x1, y1, y2, y3, x4, y4, x5, y5的数据
% 创建图形窗口
figure;
% 第一个Y轴(左侧)
yyaxis left
plot(x1, y1, 'b', 'LineWidth', 1); % 1-3组数据共用Y1轴
hold on;
plot(x2, y2, 'r', 'LineWidth', 1);
plot(x3, y3, 'g', 'LineWidth', 1);
% 设置左侧Y轴的属性
set(gca, 'YColor', 'blue');
xlabel('X-Position(m)');
ylabel('Y-Axis 1 Data');
% 第二个Y轴(右侧)
yyaxis right
plot(x4, y4, 'm', 'LineWidth', 1); % 第4组数据用Y2轴
set(gca, 'YColor', 'magenta');
ylabel('Y-Axis 2 Data');
% 第三个Y轴(右侧,与第二个Y轴相邻)
axes('Position', get(gca, 'Position'), 'Box', 'off', 'XAxisLocation', 'top', 'Color', 'none');
yyaxis right
plot(x5, y5, 'c', 'LineWidth', 1); % 第5组数据用Y3轴
ylabel('Y-Axis 3 Data');
set(gca, 'YColor', 'red');
% 设置X轴属性
xlabel('X-Position(m)');
% 设置图例
legend(〔"Y-Axis 1 Data 1", "Y-Axis 1 Data 2", "Y-Axis 1 Data 3", "Y-Axis 2 Data", "Y-Axis 3 Data"〕);
% 设置其他属性
box on;
grid on;
hold off;
在上述代码中,我们首先使用yyaxis left
和yyaxis right
来指定数据应该绘制在哪个Y轴上。然后,我们使用plot
函数来绘制数据。对于第三个Y轴,我们创建了一个新axes
对象,设置其位置与第二个Y轴相邻,并且将X轴放置在顶部。我们还需要设置Box
属性为'off'
来隐藏边框,并将Color
设置为'none'
来隐藏背景。
请注意,你可能需要根据你的具体数据和绘图需求调整代码中的参数,例如线条颜色、线宽、图例文本等。
希望如上措施及解决方案能够帮到有需要的你。
PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。
若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。
☀️写在最后
ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《CSDN问答解惑-专业版》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。
码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。
同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!
📣关于我
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。