热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab把图象坐标轴颠倒_SCI论文写作MATLAB出图(3)

接着SCI论文写作MATLAB出图(2),现在来讲第三部分柱状图饼图往往我们见多了折线图,突然出来一个柱状图也是会让人感觉很新颖的,一般在

接着SCI论文写作MATLAB出图(2),现在来讲第三部分

  1. 柱状图
  2. 饼图

往往我们见多了折线图,突然出来一个柱状图也是会让人感觉很新颖的,一般在性能对比,量不多的情况下(一般10个数量以内吧),可以考虑出一个柱状图。

别以为柱状图就那样,这里也是可以玩出很多花样的。

1 柱状图

1. 1 常规出图

8e740220c29bf0da8fb55ee2aa840dc1.png
我们一般见到的柱状图(引自文献[1])

下来去编辑一段程序,这里的主函数为bar

clc
clear
set(gcf,'position',[1200,20,330,600],'PaperPositionMode','auto');
set(gcf,'ToolBar','none','ReSize','off'); % remove the toolbar
set(gcf,'color','w');
x = 0:0.1:1;
y =@(x) x.^2 + 2*x + 5;
a = bar(x,y(x),0.5,'FaceColor',[0.02 0.64 0.95],'EdgeColor',[0.02 0.64 0.95],'LineWidth',1.5); %坐标范围设置
g = get(a,'Parent');
axis([-0.05 1.05 0 9]);
set(gca,'YTick',0:3:9);
set(g,'Linewidth',1.5,'FontName','Times New Roman','FontSize',12,'FontWeight','bold');%添加注释,坐标轴标签等
ylabel('Y值','FontName','华文中宋','FontSize',14)
xlabel('时间/(s)','FontName','华文中宋','FontSize',14)

出图效果:

829b0b63157d5f821dd4c2750c77daaa.png
未调整长宽比,matlab自动生成,可以观察到左右边缘有较大空白区域,应该尽量避免

注:

1) 这里的图幅是计算机自动给的,如果我们想自己去调整长宽比,可以增加如下代码

set(gca,'Position',[0.08 0.15 0.88 0.83]);%图的位置

5be8e82bbbecef6fd52ba962774ebdc7.png
调整长宽比后的效果

2)如果增加图例

h = legend(a,'参考值','Location','northwest')
set(h,'Linewidth',1.5,'FontName','华文中宋','FontSize',13,'FontWeight','bold');

8db01425804236f68c41b27557a4196a.png

如果不显示图例的框

legend('boxoff')

1.2 顺序可以颠倒一下

6dfaa86447a790f59a8ec66ee03dce14.png
引自文献[1]

如果以上图所示的出图方式出图,主函数为barh

clc
clear
set(gcf,'position',[1200,200,600,400],'PaperPositionMode','auto');
set(gcf,'ToolBar','none','ReSize','off'); % remove the toolbar
set(gcf,'color','w');x = 0:0.1:1;
y =@(x) x.^2 + 2*x + 5;
a = barh(x,y(x),0.5,'FaceColor',[0.02 0.64 0.95],'EdgeColor',[0.02 0.64 0.95],'LineWidth',1.5);
set(gca,'Position',[0.1 0.15 0.88 0.83]);%图的位置
%坐标范围设置
g = get(a,'Parent');
axis([0 9 -0.1 1.1]);
set(gca,'XTick',0:3:9);
set(g,'Linewidth',1.5,'FontName','Times New Roman','FontSize',12,'FontWeight','bold');%添加注释,坐标轴标签等
xlabel('Y值','FontName','华文中宋','FontSize',14)
ylabel('时间/(s)','FontName','华文中宋','FontSize',14)h = legend(a,'参考值','Location','southeast')
set(h,'Linewidth',1.5,'FontName','华文中宋','FontSize',13,'FontWeight','bold');
legend('boxoff')

这里需要注意的是,与上1.1所述的,X Y轴要互换,比如

axis([0 9 -0.1 1.1]);
set(gca,'XTick',0:3:9);

720427d7b1fe669589b8a19df07ccfef.png
X,Y轴互换

1.3 有多组数据的情况

这种方式和1中的类似,无非就是多了几组数据而已

96d4cfa8e96fde7c61bc5308d6644355.png
引自文献[1]

clc
clear
set(gcf,'position',[1200,200,600,400],'PaperPositionMode','auto');
set(gcf,'ToolBar','none','ReSize','off'); % remove the toolbar
set(gcf,'color','w');x = 0:0.2:1;
y =@(x) x.^2 + 2*x + 5;
z =@(x) x.^3 + x +3;%添加一组数据用于数值对比
t = 1:1:6;
data=[y(x);z(x)]';
%注意这里转置之后,每行对应两个数字,对应每个组两个项目
a = bar(t,data,1); %1为柱状图的柱宽
set(gca,'Position',[0.1 0.15 0.88 0.83]);%图的位置
a(1).FaceColor = '[0 0.5 0.5]';%颜色的两种设置方式
a(2).FaceColor = 'r';
a(1).EdgeColor = '[0 0.5 0.5]';%EdgeColor为边缘颜色
a(2).EdgeColor = 'r';
%坐标范围设置
g = get(a,'Parent');%添加注释,坐标轴标签等
ylabel('Y值','FontName','华文中宋','FontSize',14)
xlabel('时间/(s)','FontName','华文中宋','FontSize',14)
h = legend(a,'参考值1','参考值2','Location','northwest','Orientation','horizontal')
set(h,'Linewidth',1.5,'FontName','华文中宋','FontSize',13,'FontWeight','bold');
legend('boxoff')

78af9d0d50b2d435e8f1b0d87662cbb9.png

1)这里如果不是以1~6区分,比如是某些固定参数,如beta,Alpha等希腊字母

可以更改X轴标签,增加如下代码

set(gca,'xticklabel',{'1' '2' '3' '4' 'beta' 'alpha' });

f526629f4b0eff13cbe8d0d168d9a151.png

2) 这里的坐标轴线宽不能用上述1中的坐标轴线宽的代码更改,这个bug目前我没找到解决办法,可以用以下的方法替代

caefdae27461294aa2063d5a7af9e9a0.png
可以在figure中自带的坐标轴属性中更改Linewidth的参数值

3)可以换一种出图效果

a547581755811f4cbaee6c9cb8157553.png
引自文献[1]

只需要给主函数增加一个参数'stacked'

a = bar(t,data,0.5,'stacked'); %0.5为柱状图的柱宽

b40f066583e77b0979222e2f409c8676.png

:如果要画引图中的条纹以区分不同类型

请参考

Matlab:柱状图饼状图填充不同条纹_搜狗指南​zhinan.sogou.com

1.4 三维柱状图

如下图所述,这里的主函数为bar3

b2b489bef3f50b0721f092198d46b581.png
三维柱状(引自文献[1])

clear
clc
set(gcf,'position',[700,200,600,400],'PaperPositionMode','auto');
set(gcf,'ToolBar','none','ReSize','off'); % remove the toolbar
set(gcf,'color','w');
set(gca,'Position',[0.01 0.08 0.98 0.9]);x = 0:0.2:1;
y =@(x) x.^2 + 2*x + 5;
z =@(x) x.^3 + x +3;%添加一组数据用于数值对比
t = 1:1:6;
data=[z(x);y(x)]';
a=bar3(data);%矩形条颜色
a(1).FaceColor =[1 0.27 0];
a(2).FaceColor =[0.02 0.64 0.95];zlabel('Value','FontSize',14);
set(gca,'xticklabel',{'z' 'y'});%修改轴标签
set(gca,'yticklabel',{'1' '2' '3' '4' '5' 'alpha'});%修改轴标签set(gca,'Linewidth',2);
set(gca,'FontName','Times New Roman','FontSize',14,'FontWeight','bold');

192d2de037e7d14e977f57c980047411.png

2 饼图

2.1 一般饼图

这里的主函数为 pie

clear
clc
set(gcf,'ToolBar','none','ReSize','off'); %移除工具栏
set(gcf,'color','w');t=0:0.1:1
y1=@(t)2.*t.^2+1;
y2=@(t)t.^3+2.^t;pie(y1(t))

d864c410a353a2ec957a4d62d478e56b.png

2.1 部分突出

这里是对主函数的一个小的变化

增加explode,个数与y1的数量一致,为11个,1表示突出显示,即在图中分离

explode = [0 1 0 1 0 0 0 1 0 0 0];
pie(y1(t),explode)

f1bde9a049fd0f49cd280cd52d2cde87.png

2.3 增加注释

1)为每个子饼增加注释,可以加入labels参数,这里接着上边2.2

labels = {'1','2','3','1','2','3','1','alpha','beta','3','3'};
pie(y1(t),explode,labels)

d814943288d84af1c096c113d1ab2b29.png

2)给注释增加颜色

p = pie(y1(t),explode,labels)t = p(18); %第x个标签,这里的数字为2*x
t.BackgroundColor = 'c';
t.EdgeColor = 'r';
t.FontSize = 14;

需要说明的是,beta在标签里是第9个,这里取值18.

0599124838c1edf7ba1aed47b1bf6973.png

:如果增加标题,使用tittle函数.

2.4 增加图例

我们会发现2.3中的图百分比不见了,如何让这些元素共存呢

pie(y1(t),explode)
legend('1','2','3','1','2','3','1','alpha','beta','3','3','Location','northeastoutside')

主函数中去掉元素labels,增加图例legend

56668f8f36be15e66f025ea86d7360fb.png
图例位置可以自由选择

2.5 绘制三维饼图

这里只需要更改主函数即可,其余原则不变,主函数为pie3

pie3(y1(t),explode)

9e041d6de1ecac671a62e5a6868c43ef.png

参考文献

  1. Jaguemont J, Boulon L, Dubé Y. A comprehensive review of lithium-ion batteries used in hybrid and electric vehicles at cold temperatures [J]. Appl Energy 2016, 164:99-114.
  2. Wang Q, Wang J, Zhao P, et al. Correlation between the model accuracy and model-based SOC estimation [J]. Electrochim Acta 2017, 228:146-59.



推荐阅读
author-avatar
372630243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有