【MATLAB基础绘图第7棒】绘制各式柱状图

  • Post author:
  • Post category:其他




1 分组绘制柱状图



1.1 案例1:常规分组柱状图

绘制分组数据,并对

数据格式和边框

等进行设置,成图如下所示:

在这里插入图片描述

MATLAB绘制代码如下:

clc
close all
clear
%% 导入数据
pathFigure= '.\Figures\' ;
Name = ["生活","生态","工业","农业","汇总"];
xLables = ['Ⅰ' ; 'Ⅱ'; 'Ⅲ'];   
mycolor = [53,42,134;
          21,132,212;
          55,184,156;
          215,186,84;
          247,250,13]./255;
      
x = [1 2 3];         
XX = [0	0	0	3.92	2.78
0	0	0	6.63	4.2
0.78	8.37	9.98	22.15	15.46];

figure(1);
hold on;
box on;
h = bar(  XX ,'FaceColor','flat');
for k = 1:size(XX,2)
    h(k).FaceColor = mycolor(k,:);
end
set(gca,'XTick', x , 'XTickLabel',xLables);
set(gca,'FontSize',12,'Fontname', 'Times New Roman');
xlabel("情景",'FontName','宋体','FontSize',14,'Fontweight','bold');                          % 后续调整坐标标题
ylabel("\fontname{宋体}\fontsize{15}缺水率(\fontname{Times New Roman}\fontsize{15}%\fontname{宋体}\fontsize{15})",'FontSize',14,'Fontweight','bold');                          % 后续调整坐标标题
hl = legend( Name );
set(hl,'Box','off','location','NorthWest','NumColumns',1,'FontSize',12,'FontName','宋体');    
ax1 = gca;
ax1.FontSize = 12;
ax1.LineWidth = 1;
set(gca,'Layer','top');

str= strcat(pathFigure, "Figure1", '.tiff');
print(gcf, '-dtiff', '-r600', str);



2 绘制渐变柱状图

看论文时,被这种图深深吸引了,如果想要在MATLAB中绘制以下图形,应当如何实现呢?

在这里插入图片描述

图源:J2022-Observed decrease in light precipitation in part due to urbanization-Scientific Reports



2.1 案例

经过多方学习、尝试后发现,MATLAB实现该过程实属困难,但

Origin

可以实现,以如下案例为代表,简要演示如何绘图:


1、数据准备


将如下数据输入Origin新建表格Book中,并将B设置为X2

adc	ba	0.52
adc	ab	0.25
adc	ac	0.8
cda	aa	0.33
cda	bb	0.48
cda	cc	0.53
bbc	ca	0.15
bbc	cb	0.66
bbc	cd	0.88

在这里插入图片描述

在这里插入图片描述

then,分别将A、B两列设置为列

在这里插入图片描述


2、绘制多因子柱状图


选中所有数据,点击绘图-

多因子分组柱状图


在这里插入图片描述

在【数据列】部分选取C,在子组列部分选取both A and B,then 确定,便得到初步图形

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


3、加工美化


(先删除了图例,太丑了,看见恶心),以adc组为例展示

按住ctrl后并点击鼠标左键便可选中第一个柱子,双击进入编辑界面

在这里插入图片描述

做如下编辑

在这里插入图片描述

在这里插入图片描述

同理调整ab,ac两根柱子,至此,adc柱状图颜色已调整好,然后添加误差棒

在这里插入图片描述

选中图形,然后点击左上角插入-误差棒,单击图中误差棒便可调整颜色及粗细

在这里插入图片描述

在这里插入图片描述

finally,添加直线以区分组别,选中图形,点击插入-直线,填写位置即可(可以随便填写然后拖动,也可以仔细确定-一步到位),然后单击直线,调整宽度、颜色、形状等

其他字体、柱子宽度、误差棒数据选择等可自行调整、十分简单

在这里插入图片描述

在这里插入图片描述



3 绘制多组柱状图并修改文字颜色一致

在这里插入图片描述

图源:J2022-Observed decrease in light precipitation in part due to urbanization-Scientific Reports



3.1 案例



4 绘制双轴-倒立柱状图

成图如下:

请添加图片描述

MATLAB代码如下:

clc
close all
clear
%% 导入数据
pathFigure= '.\Figures\' ;

X = randn(40,1);
Ymax = 50;
Y = Ymax*randn(40,1);

%% 开始绘图
figure(1)
hold on;box on;grid off;
h(3) = area( X,'FaceColor', [0.5529,0.7137,0.8039] ,'LineStyle','none');
[AX,h(1),h(2)] = plotyy( 1:length(X), X, 1:length(X) , Y, 'plot','bar');              % 画双轴,AX(1)左轴,AX(2)右轴,H为曲线本身
set(AX(2),'YDir','reverse','Ylim',[0, Ymax*3 ],'YTick',[0:20:Ymax*2],'FontSize',12,'Fontname', 'Times New Roman');                    % 设置右边轴为倒立
set(gca,'box','off','Ytick',[])
set(AX(1),'YLim',[min(X)*1.5,1.5*max(X)],'YTick',[floor(min(X)*1.5):1:ceil(1.5*max(X)) ],'Fontsize',10,'YColor','k');
%设置坐标轴的标题
h(5) = plot( zeros( length(X) ,1) ,'k-','linewidth',0.75);
set(get(AX(1),'Xlabel'),'String','XLabel','Fontname', 'Times New Roman');          
set(get(AX(1),'Ylabel'),'String','YLabel1','Fontname', 'Times New Roman');      
set(get(AX(2),'Ylabel'),'string','YLabel2','LineStyle','none','Fontname', 'Times New Roman');
set(gca,'Layer','top','FontSize',12,'Fontname', 'Times New Roman');

str= strcat(pathFigure, "Figure 1", '.jpg');
print(gcf, '-djpeg', '-r600', str);



5 绘制区间位置柱状图


区间范围柱状图

是柱状图的一种,能够更加清晰地展示各类目数据区间范围分布的差异。支持通过获取数据的

最小值和最大值

之间的范围,展示不同类目下柱图的数据样式。 如下图所示:

在这里插入图片描述

图源:J2022-Amplification of non-stationary drought to heatwave duration and intensity in eastern China Spatiotemporal pattern and causes



参考



版权声明:本文为qq_44246618原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。