MATLAB plot 画折线图的常用命令总结

编程入门 行业动态 更新时间:2024-10-27 04:31:05

MATLAB plot 画折线图的常用命令总结

目录

    • MATLAB plot 画折线图的常用命令总结
    • 写在前面的话
  • 1 plot的数据内容
    • 1.1 希望画的数据
    • 1.2 折线图的点(空心实心)、颜色、线条
  • 2 x、y坐标轴的显示设置
    • 2.1 x、y坐标轴的显示范围
    • 2.2 横坐标标注从 横向 变为 竖向
    • 2.3 横坐标标注的 字体、字号、加粗等
    • 2.4 x坐标轴的文字显示
    • 2.5 y坐标轴的显示为对数坐标轴(log)
  • 3 x、y坐标轴名称(xlabel、ylabel)+标题名称(title)+图例(legend)
    • 3.1 横、纵坐标轴名称(xlabel、ylabel)
    • 3.2 标题名称(title)
    • 3.3 图例(legend)
  • 4 精益求精
    • 4.1 y轴数据的横线+小网格
    • 4.2 x轴与y轴的比例
    • 4.3 将x轴每隔一段距离作区分线
    • 4.4 删掉图上侧、右侧的短刻度线
  • 5 plot画折线图代码汇总
  • 致谢
  • 作者联系
  • 最后...许个愿ba!

写在前面的话

欢迎2022年的到来!好久没写CSDN了。这篇文章的诞生完全是偶然。
起因是2022-01-10 我和姚师兄两个在办公室里唉声叹气,他编他的程序要疯了,我编我的程序也要疯了,于是我们互换了程序编写任务(HAHA~),他帮我写了一整个程序(强啊姚师兄),我帮他写画图的程序,后续又一直改啊改(自夸一波售后到位啊)
由于后续我自己也会经常使用到matlab的画图功能,且我在反复修改姚师兄的图后积累了一定的经验,于是呢记录在这里,希望做个总结+回顾+帮助更多的人~

以下一切描述均建立在 matlab画折线图 的基础上

1 plot的数据内容

1.1 希望画的数据

代码如下:

figure
plot([1:1:100],datas,'r+');

figure 代表开一个新的窗口
执行完plot后,所有这个范围的数据都会被plot上去,如果希望坐标轴和数据紧一点,则代码如下:

axis tight

注意!执行了axis tight后,横坐标的范围不一定就是1:100,因为很可能x=1的时候没有对应数据,系统的横坐标就自然从有数据的地方开始画了。
解决方法请见 2.1 x、y坐标轴的显示范围

1.2 折线图的点(空心实心)、颜色、线条

代码如下:
(这是matlab的LineSpec举的例子,非常好!链接: https://ww2.mathworks/help/matlab/ref/linespec.html.)

plot(t,sin(2*t),'-mo',...
    'LineWidth',2,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[.49 1 .63],...
    'MarkerSize',10)

1.2 e.g.

2 x、y坐标轴的显示设置

2.1 x、y坐标轴的显示范围

代码如下:

axis([1 100 min(datas) max(datas)+10]); 

1和100是x轴的显示区域,min(datas)和max(datas)+10 是y轴的显示区域
这样子就不会存在数据顶到y轴的顶部却不清楚数据大概是多少的情况啦!

2.2 横坐标标注从 横向 变为 竖向

2.2 e.g.

代码如下:

set(gca,'XTickLabelRotation',90)

这个90是指转90°,你设置什么数他就转多少度

2.3 横坐标标注的 字体、字号、加粗等

代码如下:

set(gca,'xtick',[1:2:6,6],'fontname','Times New Roman','fontsize',6,'fontweight','bold')

(我发现这个语句会导致x和y两个坐标轴同时改变字体字号等,目前暂时不会将x轴y轴的字体字号设置得不一样,如果我会了,会及时修改在文章中的,也欢迎大家的补充)

‘fontname’,‘Times New Roman’ 代表字体
‘fontsize’,6 代表字号,现在是6号字(2.3 e.g.),2.2 e.g.里是12号字,对比一下就发现确实小了很多:
2.3 e.g.

‘fontweight’,'bold’表示加粗
这里的 [1:2:6,6] 很有意思,表达的是每隔2显示标记,你的数据可能是1:1:6的一共6个横坐标的点,但是横坐标只显示1,3,5,6

2.4 x坐标轴的文字显示

代码如下:

set(gca,'XTickLabel',{'冬','春','夏','秋'});

2.5 y坐标轴的显示为对数坐标轴(log)

代码如下:

    set(gca,'YScale','log')
    set(gca,'yminortick','on');
    set(gca,'ytick',[0,0.2,0.3,0.5,1,3,5,10,20,40,50]);

3 x、y坐标轴名称(xlabel、ylabel)+标题名称(title)+图例(legend)

3.1 横、纵坐标轴名称(xlabel、ylabel)

x轴坐标轴名称的代码,如下:

xlabel('时间','fontname','黑体','fontSize',12,'fontweight','bold','color','k',‘position’,[62,250])

这个‘position’,[62,250]代表坐标轴名称显示的位置,数字自己修改~
当然如果你发现运行这条语句之后找不到坐标轴名称了,且程序没报错的话,就是position设置的太远了,这时候还不如直接运行下面这条简化版代码,虽然x轴名称位置在中间丑了一点但是不妨碍科研ya~

xlabel('时间','fontname','黑体','fontSize',12,'fontweight','bold','color','k')

y轴坐标轴名称的代码,如下:

pos = axis;
ylabel('浓度(mg/m^{-3})','fontname','黑体','fontsize',12,'rotation',0,'position',[pos(1)-2.5 pos(4)-2]);

这个 pos = axis 的axis为 2.1 x、y坐标轴的显示范围 中的axis;
‘rotation’,0则把垂直于y轴显示的y坐标轴名称 变为 垂直于x轴显示,情况如下:
3.1 e.g.

3.2 标题名称(title)

代码如下:

title('我好爱好爱我导师喔喔喔','fontname','黑体','fontsize',25,'fontweight','bold','color','k');

3.3 图例(legend)

代码如下:

legend({'图例1','图例2'},'Location','northeast','fontsize',15);

可以通过调节 ‘fontsize’ 实现 对图例方块大小的调整

4 精益求精

4.1 y轴数据的横线+小网格

4.1 e.g.

如果想作出如上图所示的灰色横线,则代码如下:

set(gca,'Ygrid','on')

如果想作出下图的灰线小网格,则代码如下:

grid on

4.2 x轴与y轴的比例

如果x轴变化范围较大,y轴变化范围较小,则需更改x轴y轴的显示比例,代码如下:

set(gcf,'unit','centimeters','position',[10,5,35,10])

gcf是目标图像的图形句柄对象,gca是目标图像的坐标轴句柄对象
‘unit’,‘centimeters’ 代表单位是cm
‘position’,[10,5,35,10] 代表figure窗口的左下顶点位于以显示器左下角为顶点的笛卡尔直角坐标系的(10cm,5cm)的位置,图的长宽分别为35cm和10cm。如图所示:
4.2 e.g.

4.3 将x轴每隔一段距离作区分线

4.3 e.g.

代码如下:

pos = axis;
x_line = [1:4:100];%间隔为4
n = length(x_line);
for i = 1:n
    plot([x_line(i),x_line(i)],[pos(3),pos(4)],'k');
    hold on
end

这个 pos = axis 的axis为 2.1 x、y坐标轴的显示范围 中的axis。

4.4 删掉图上侧、右侧的短刻度线

4.4 e.g. = 4.2 e.g.+4.3 e.g.
代码如下:

box off
ax2 = axes('Position',get(gca,'Position'),...
           'XAxisLocation','top',...
           'YAxisLocation','right',...
           'Color','none',...
           'XColor','k','YColor','k');
set(ax2,'YTick', []);
set(ax2,'XTick', []);
box on

(这个操作不是我想的,是别人写出来的,链接: https://blog.csdn/zqliu133/article/details/60867771)
注意!这段代码一定要放在画图的最后!一旦运行了这段代码,再想改坐标轴的字体大小什么的都改不了了

5 plot画折线图代码汇总

以后画图可以直接复制以下代码,然后自己再进行修改:

%该程序可画出x轴为具体时间的折线图
%%
%设置时间序列+时间序列
t1=datenum('2020-09-01 0:00:00');
t2=datenum('2020-09-30 23:00:00');
d1=3600/3600/24;%更改第一个3600,以1h为间隔,1h=3600s,第一个3600就代表了多少秒
d2=28800/3600/24;%画图用的d2,隔8h
d3=86400/3600/24;%画线用的d3,隔1day
T = datestr((t1:d1:t2)','yyyy-mm-dd HH:MM:SS')
%%
%画图开始
figure
plot([t1:d1:t2],y1,'-g.',[t1:d1:t2],y2,'-r*');%要改成自己的数据
hold on
axis([t1 t2 min(y1) max(y1)+10]); %要改成自己的数据
pos = axis;

%以下是4.3——x轴每隔一段距离作平行y轴的区分线,不需要可以删
x_line = [t1:d3:t2];%要改成自己的数据
n = length(x_line);
for i = 1:n
    plot([x_line(i),x_line(i)],[pos(3),pos(4)],'k');
    hold on
end

set(gca,'xtick',[t1:d2:t2,t2],'fontname','黑体','fontsize',12,'fontweight','bold')
set(gca,'XTickLabelRotation',90)
datetick('x','mm/dd HH:MM','keepticks')
set(gca,'ytick',[0:10:80],'fontname','黑体','fontsize',12,'fontweight','bold') %要改成自己的数据
set(gcf,'unit','centimeters','position',[10,5,40,15]); %要改成自己的数据
grid on
%以下4行需要改成自己的标注
xlabel('日期(北京时间)','fontname','黑体','fontsize',12,'fontweight','bold'); 
ylabel('Chl浓度(mg/m^{-3})','fontname','黑体','fontsize',12,'rotation',0,'fontweight','bold','position',[pos(1)-2.5 pos(4)-2]); 
title('我好爱好爱我导师喔喔喔','fontname','黑体','fontsize',25,'fontweight','bold','color','k'); 
legend({'111','222'},'Location','northeast','fontsize',15);

box off
ax2 = axes('Position',get(gca,'Position'),...
           'XAxisLocation','top',...
           'YAxisLocation','right',...
           'Color','none',...
           'XColor','k','YColor','k');
set(ax2,'YTick', []);
set(ax2,'XTick', []);
box on

致谢

感谢2019年帮我画重点+2022年教我编程的姚师兄,在你的帮助下我学到了很多matlab的新命令
感谢2018年帮姚师兄画重点+学识广博又乐于助人的小明,我取得的一切成绩都应归功于你的帮助
感谢姚师兄工位+我工位边的李博士,在你的帮助下,我批量下数据下的又快又好
感谢我的导师,于我而言,世间最美好的事情莫过于与你的相遇

作者联系

本人QQ:723720261,欢迎共同探讨相关问题!欢迎批评指正!
本人原创,转载请注明出处。

最后…许个愿ba!

  • 顺利读博
  • 英语能力快上来啊
  • 保持50kg的体重

更多推荐

MATLAB plot 画折线图的常用命令总结

本文发布于:2023-06-13 16:59:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1385305.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:常用命令   折线图   MATLAB   plot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!