【Matlab绘图进阶第2弹】Matlab绘制论文柱状图
【Matlab绘图进阶第2弹】Matlab绘制论文柱状图
柱状图是SCI论文中较常见的一种图示类型,本期通过Matlab绘制出包含误差与显著性的进阶柱状图,今天分享如何从0到1实现柱状图的绘制!
成图效果展示
绘图三步走
-
配色
论文配色是最为关键的因素,配色是一篇论文的颜值担当,好的配色给审稿人带来好的第一印象,好的配色事半功倍。
-
数据准备
数据主要来自于大家实验处理后的数据,该图所需数据主要分为三部分:散点数据、误差棒数据、柱状图数据,最终的成图也是将这三部分数据有机融合在一张图示中。
-
函数使用
Matlab有着强大的数据处理与绘图功能,主要离不开丰富的函数库,该图主要采用了三种函数:bar(柱状图)、scatter(散点图)、errorbar(误差)。下面让我们一起开始学习吧。
1. 配色
颜色提取的方法主要是从PPT中进行提取,首先选择一张喜欢的SCI图片,下图为搜索到的一张图片,以该图片为例进行颜色提取。
步骤1.1—网上搜索自己想要的图片或者已有的SCI论文中好看的图片,以下图为例。
步骤1.2—复制图片到PPT中,插入形状,此处选择圆形-点击圆形找到形状填充-取色器-单击图片中喜欢的颜色位置-此时形状填充颜色改变-完成取色-记录配色RGB值。
步骤1.3—保存配色RGB值到Matlab中,此处需要注意的是,在Matlab中,需要将RGB值除以255,位于0-1之间,下图为本次绘图中用到的配色。
以下就是保存到Matlab中的5种颜色数据啦
mycolor = [0,0.501960784313726,1;...1,1,1;....0.00392156862745098,0.00392156862745098,0.00392156862745098;...0.745098039215686,0.847058823529412,1;...1,0.949019607843137,0.741176470588235];
2. 数据准备
以下数据为自己复现SCI拟定的数据,大家可以根据自己的数据进行修改。
%% 自定义柱状图数据
X = [0.5 1 1.5;2.5 3 3.5]; % 1 2代表有两大组柱状图
Y = [1.8,1.5,1;2.3,2.5,2.2]; %每组有三个数
%% 自定义散点图数据
scatter_X = [0.4,0.5,0.6, 0.9,1,1.1, 1.43,1.5,1.58,...2.5,2.5,2.5, 2.9,3,3.1, 3.4,3.5,3.6];
scatter_Y = [1.83,1.75,1.82, 1.42,1.60,1.44, 0.89,1.17,0.93,...2.13,2.3,2.47, 2.37,2.68,2.45, 2.3,2.01,2.3];
%% 自定义误差棒的值 相对于Y上下数值
Y_low = [0,0.07,0.08;0.1,0.1,0.1];
Y_high =[0,0.07,0.08;0.1,0.1,0.1];
3. 画图函数使用
使用bar函数绘制柱状图、errorbar绘制误差线、scatter绘制散点;'FaceColor'用来改变柱状图内部颜色;'EdgeColor'用来定义边线颜色;'Linewidth'改变线宽。代码如下:
%% 开始绘图
% 设置背景为白色
figure('color',[1 1 1]);
% bar(X,Y,width) 宽度为柱状图宽度0.7,参数依次为颜色、边缘颜色与线宽
for i = 1:2b =bar(X(i,:),Y(i,:),0.7,'stacked','FaceColor',bar_color(i,:),'EdgeColor',...scatter_color,'Linewidth',1.5);hold on;% errorbar函数 绘制误差棒%errorbar(X,Y,Low,High);参数以柱状图为基础、上下限高度、线宽、误差棒的长短errorbar(X(i,:),Y(i,:),Y_low(i,:),Y_high(i,:),...'LineStyle','none',...'Color',scatter_color,...'Linewidth',1.5,'Capsize',12);
end
%% 绘制散点图
% 绘制实心散点
% scatter(X,Y) 参数:点的大小、填充颜色
for i = 1:length(scatter_X)scatter(scatter_X(i),scatter_Y(i),35,'filled','MarkerFaceColo',scatter_color);
end
hold on;
此时距离出图接近了一步;接着用plot与text函数绘制横线与显著性等要素。
%% 绘制直线 函数——plot:绘制直线 text:添加文本
plot([0.5,1.5],[2.1,2.1],'Color',scatter_color,'Linewidth',1.5);
text(0.51,2.3,'p = 0.0078','FontSize',15,'Fontname','微软雅黑');
hold on;
plot([0.5,2.5],[2.8,2.8],'Color',scatter_color,'Linewidth',1.5);
text(1.0,3,'p = 0.0315','FontSize',15,'Fontname','微软雅黑');
hold on;
plot([1,3],[3.28,3.28],'Color',scatter_color,'Linewidth',1.5);
text(1.6,3.5,'p = 0.0044','FontSize',15,'Fontname','微软雅黑');
hold on;
plot([1.5,3.5],[3.7,3.7],'Color',scatter_color,'Linewidth',1.5);
text(2,3.9,'p = 0.0057','FontSize',15,'Fontname','微软雅黑');
最后设置横轴与纵轴的图例,马上就要大功告成啦
%% 设置图例
set(gca, 'Box', 'off','XGrid', 'off', 'YGrid', 'off','TickDir', 'out', 'TickLength', [.005 .005]);
% 对Y轴显示范围与刻度设置
set(gca,'YTick', 0:1:4, 'Ylim',[0,4]);
% 对X轴显示范围与横坐标显示设置
set(gca,'Xlim',[0 4],'Xtick', [0:0.5:4], 'Xticklabel',{'','0.5','4','8',' ','0.5','4','8'});
% 对坐标轴添加图例
ylabel(['KeNan','\\','1 ×10^5 Cells(uM)']);
set(gca, 'FontName', 'Arial', 'FontSize', 15)
set(gca,'linewidth',1.5)
一张论文柱状图就完成啦!
下一期:Matlab绘制高颜值热图
柱状图代码资料获取方式:
完整代码与资料获取链接