投稿问答最小化  关闭

万维书刊APP下载

Matlab进阶绘图第10期—带填充纹理的柱状图

2023/4/4 13:52:48  阅读:259 发布者:

带填充纹理的柱状图是通过在原始柱状图的基础上添加不同的纹理得到的,可以很好地解决由于颜色区分不足而导致的对象识别困难问题。

由于Matlab中未提供纹理填充选项,因此需要大家自行设法解决。

本文使用Kesh Ikuma制作的hatchfill2工具(Matlab Central, 2023)进行带填充纹理的柱状图的绘制,先来看一下成品效果:

特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加入方式。

1. 数据准备

此部分主要是读取原始数据,并初始化绘图参数。

% 读取数据

load data.mat

% 初始化参数

X = x;

Y = dataset;

 

2. 颜色定义

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

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

这里直接使用TheColor配色工具中的SCI权威配色库:

%% 颜色定义

map = TheColor('sci',2064,'map',10);

map = flipud(map);

C1 = map(1,1:3);

C2 = map(2,1:3);

C3 = map(3,1:3);

C4 = map(6,1:3);

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

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

3. 带填充纹理的柱状图绘制

利用bar’和‘hatchfill2’命令,绘制初始的带填充纹理的柱状图。

GO = bar(X,Y,1,'EdgeColor','k','LineWidth',1);

hatchfill2(GO(1),'cross','HatchAngle',45,'HatchDensity',40,'HatchColor','k');

hatchfill2(GO(2),'single','HatchAngle',45,'HatchDensity',40,'HatchColor','k');

hatchfill2(GO(3),'single','HatchAngle',0,'HatchDensity',40,'HatchColor','k');

hatchfill2(GO(4),'single','HatchAngle',-45,'HatchDensity',40,'HatchColor','k');

hTitle = title('Texture filled bar chart');

hXLabel = xlabel('Samples');

hYLabel = ylabel('RMSE (m)');

 

4. 细节优化

为了插图的美观,将初始柱状图赋上之前选择的颜色:

% 赋色

GO(1).FaceColor = C1;

GO(2).FaceColor = C2;

GO(3).FaceColor = C3;

GO(4).FaceColor = C4;

进一步,对坐标轴细节等进行美化,设置完毕后,以期刊所需分辨率、格式输出图片:

%% 图片输出

exportgraphics(figureHandle,'test1.png','Resolution',300)

也可以尝试黑白配色(FaceColor设置为白色即可):

以上。

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

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


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com