学术资讯 » 学术资源

  • 首 页
  • 期刊选题
  • 期刊点评
  • 期刊大全
  • 学人博客
  • 编辑征稿
  • 投稿选刊
  • 万维群组
  • 学术会议
  • 万维读书
  • SCI/E期刊
  • SSCI期刊
  • AHCI期刊
  • Matlab论文插图绘制模板第61期—横向多组堆叠图

    阅读: 2022/11/8 13:59:29

    之前有分享过一个Matlab多组堆叠图的绘制模板:

    最近有朋友私信我,想让我出一个横向的多组堆叠图。

    所以,这次就再出一期横向多组堆叠图的教程。

    先来看一下成品效果:

    特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进行科研绘图的门槛,只需按照模板格式添加相应内容,即可得到满足大部分期刊以及学位论文格式要求的数据插图。如果觉得有用可以分享给你的朋友。

    模板中最关键的部分内容:

    1. 数据准备

    此部分非常的关键。

    示例程序中,共有6组数据,每组包括2个堆叠柱子,每根柱子包括4个子单元。

    大家可以结合第三部分内容思考一下这里变量设置的原因。

    % 读取数据

    % 自变量

    Y = 1:18;

    Y(3:3:18) = [];

    % 因变量

    X = [5.5 5.6 8.5 8.7 7.1 7.2

    5.5 5.6 8.5 8.8 7.1 7.3

    3.3 3.1 5.2 4.2 4.1 4.1

    2.6 2.2 5.1 4.1 4.5 4.4];

    X = repmat(X,1,2);

    2. 颜色定义

    作图不配色就好比做菜不放盐,总会让人感觉少些什么。

    但颜色搭配比较考验个人审美,需要多加尝试。

    尤其是这种图,颜色选不好很容易显得杂乱。

    这里直接使用TheColor配色工具中的SCI权威配色库中的渐变色,并利用渐变色稀疏化功能得到8个颜色:

    %% 颜色定义

    num = size(X,1); % 堆叠柱数

    C = TheColor('sci',2068,'map',num*2);

    C1 = C(1:4,:); % 第一组颜色

    C2 = C(5:8,:); % 第二组颜色

    (点击上图查看TheColor具体功能)

    获取方式:公众号(阿昆的科研日常)后台回复 TC

    3. 横向多组堆叠图绘制

    使用‘barh’命令,分别绘制未经美化的两组横向堆叠图。

    % 第一组

    X1 = zeros(size(X));

    X1(:,1:2:12) = X(:,1:2:12);

    GO1 = barh(Y,X1',1,'stacked','EdgeColor','k');

    hold on

    % 第二组

    X2 = zeros(size(X));

    X2(:,2:2:12) = X(:,2:2:12);

    GO2 = barh(Y,X2',1,'stacked','EdgeColor','k');

    hTitle = title('HMultiStackBar Plot');

    hXLabel = xlabel('Point spacing');

    hYLabel = ylabel('Samples');

    考虑到配色问题,这里沿用了双轴柱状图的作图思路,构造了两组数据,画了两次堆叠图。

    具体可以参考Matlab论文插图模板第4期—双坐标轴柱状图这期内容。

    4. 细节优化

    为了插图的美观,赋上之前选择好的颜色。

    % 赋色

    % 第一组的赋色

    GO1(1).FaceColor = C1(1,:);

    GO1(2).FaceColor = C1(2,:);

    GO1(3).FaceColor = C1(3,:);

    GO1(4).FaceColor = C1(4,:);

    % 第二组的赋色

    GO2(1).FaceColor = C2(1,:);

    GO2(2).FaceColor = C2(2,:);

    GO2(3).FaceColor = C2(3,:);

    GO2(4).FaceColor = C2(4,:);

    进一步,调整坐标轴、坐标轴刻度及其标签,添加legend,设置字体字号,

    % 坐标轴美化

    set(gca, 'Box', 'off', ... % 边框

    'XGrid', 'off', 'YGrid', 'off', ... % 网格

    'TickDir', 'out', 'TickLength', [.005 .005], ... % 刻度

    'XMinorTick', 'off', 'YMinorTick', 'off', ... % 小刻度

    'XColor', [.1 .1 .1], 'YColor', [.1 .1 .1],... % 坐标轴颜色

    'YTick',Y(1:2:end)+0.5,...

    'YTickLabel',{'s1','s2','s3','s4','s5','s6'})

    % Legend设置

    hLegend = legend([GO1(1),GO1(2),GO1(3),GO1(4),GO2(1),GO2(2),GO2(3),GO2(4)], ...

    'A1', 'A2', 'A3', 'A4','B1', 'B2', 'B3', 'B4', ...

    'Location', 'eastoutside','Orientation','vertical');

    hLegend.ItemTokenSize = [5 5];

    legend('boxoff');

    % 字体和字号

    set(gca, 'FontName', 'Helvetica')

    set([hXLabel, hYLabel, hLegend], 'FontName', 'AvantGarde')

    set(gca, 'FontSize', 10)

    set([hXLabel, hYLabel, hLegend], 'FontSize', 11)

    set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')

    % 背景颜色

    set(gcf,'Color',[1 1 1])

    设置完毕后,按照所需分辨率、格式输出

    。

    %%

    输出

    figW = figureWidth;

    figH = figureHeight;

    set(figureHandle,'PaperUnits',figureUnits);

    set(figureHandle,'PaperPosition',[0 0 figW figH]);

    fileout = 'test';

    print(figureHandle,[fileout,'.png'],'-r300','-dpng');

    也可以尝试其它配色:

    以上。

    转自:“阿昆的科研日常”微信公众号

    如有侵权,请联系本站删除!


    浏览(415)
    点赞(0)
    收藏(0)
  • 上一篇:如何利用Endnote快速搞定论文参考文献格式

    下一篇:Matlab用户必备的画图配色加强补充包

  • 首页

  • 文章

  • 期刊

  • 帮助

  • 我的

版权所有 Copyright@2023    备案号:豫ICP备2021036211号