接着SCI论文写作MATLAB出图(2),现在来讲第三部分
- 柱状图
- 饼图
往往我们见多了折线图,突然出来一个柱状图也是会让人感觉很新颖的,一般在性能对比,量不多的情况下(一般10个数量以内吧),可以考虑出一个柱状图。
别以为柱状图就那样,这里也是可以玩出很多花样的。
1 柱状图
1. 1 常规出图
我们一般见到的柱状图(引自文献[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)
出图效果:
未调整长宽比,matlab自动生成,可以观察到左右边缘有较大空白区域,应该尽量避免注:
1) 这里的图幅是计算机自动给的,如果我们想自己去调整长宽比,可以增加如下代码
set(gca,'Position',[0.08 0.15 0.88 0.83]);%图的位置
调整长宽比后的效果2)如果增加图例
h = legend(a,'参考值','Location','northwest')
set(h,'Linewidth',1.5,'FontName','华文中宋','FontSize',13,'FontWeight','bold');
如果不显示图例的框
1.2 顺序可以颠倒一下
引自文献[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);
X,Y轴互换1.3 有多组数据的情况
这种方式和1中的类似,无非就是多了几组数据而已
引自文献[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')
注
1)这里如果不是以1~6区分,比如是某些固定参数,如beta,Alpha等希腊字母
可以更改X轴标签,增加如下代码
set(gca,'xticklabel',{'1' '2' '3' '4' 'beta' 'alpha' });
2) 这里的坐标轴线宽不能用上述1中的坐标轴线宽的代码更改,这个bug目前我没找到解决办法,可以用以下的方法替代
可以在figure中自带的坐标轴属性中更改Linewidth的参数值3)可以换一种出图效果
引自文献[1]只需要给主函数增加一个参数'stacked'
a = bar(t,data,0.5,'stacked'); %0.5为柱状图的柱宽
注:如果要画引图中的条纹以区分不同类型
请参考
Matlab:柱状图饼状图填充不同条纹_搜狗指南zhinan.sogou.com
1.4 三维柱状图
如下图所述,这里的主函数为bar3
三维柱状(引自文献[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');
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))
2.1 部分突出
这里是对主函数的一个小的变化
增加explode,个数与y1的数量一致,为11个,1表示突出显示,即在图中分离
explode = [0 1 0 1 0 0 0 1 0 0 0];
pie(y1(t),explode)
2.3 增加注释
1)为每个子饼增加注释,可以加入labels参数,这里接着上边2.2
labels = {'1','2','3','1','2','3','1','alpha','beta','3','3'};
pie(y1(t),explode,labels)
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.
注:如果增加标题,使用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
图例位置可以自由选择2.5 绘制三维饼图
这里只需要更改主函数即可,其余原则不变,主函数为pie3
参考文献
- 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.
- 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.