分享一下画图的脚本,主要是留个备份,以后自己画图时方便查找~
该脚本主要使用了MATLAB绘图的一些基础知识,比较麻烦的是error bar的绘制,个人感觉本文使用这个方法是比较好用的(我也试过下载别人的function来画error bar,但没有找到合适的)。
以下是代码,语句都比较容易理解,且做了注释,所以就不一一阐述了。
clc;
clear;
close all;
% 示例:绘制3(A: A1, A2, A3)*3(B: B1, B2, B3)交互作用图
% 准备数据:行是自变量A的数据,列是自变量B的数据
mean = [487.111, 515.761, 638.639; 479.261, 503.000, 546.315; 583.183, 387.921, 421.831]; % 因变量均值
se = [22.318, 37.683, 28.271; 27.391, 53.286, 46.012; 42.371, 53.146, 38.917]; % 因变量标准误
% 绘图
figure = bar(mean); % 使用bar函数绘制直方图,如果想绘制线形图,则使用plot函数
hold on; % 在同一个图中绘制多个数据时需要用“hold on”函数
% 在同一个图中,绘制出误差棒
% (1)在这个例子中,如果我们直接用errorbar(mean, se)绘制误差棒
% (2)会导致误差棒重叠在横坐标为1、2、3的三个位置上
% (3)所以我们需要定义一个数组,指定每个误差棒的横坐标
x = [0.775 1 1.225; 1.775 2 2.225; 2.775 3 3.225]; % 与mean中的元素一一对应
for i = 1:3 % 依次绘制出mean中每一行的误差棒
errorbar(x(:,i), mean(:,i), se(:,i), 'k', 'Linestyle', 'None'); % 绘制黑色的误差棒,不画线条
end
box off; % 去掉上方和右边的框线
% 设置轴的名称
xlabel('A'); % x轴名称
ylabel('Reaction time (ms)'); % y轴名称
% 设置轴的刻度值和区间
set(gca, 'XTickLabel', {'A1', 'A2', 'A3'}); % x轴的刻度值
set(gca, 'XLim', [0.5, 3.5]); % x轴区间
set(gca,'YLim', [0, 700]); % y轴区间
% 更改颜色
set(figure(1),'FaceColor','#a2a2a2');
set(figure(2),'FaceColor','#c6c6c6');
set(figure(3),'FaceColor','#ececec');
% 设置字体、字号
set(gca, 'Fontname', 'Times New Roman'); % 字体
set(gca,'Fontsize', 12); % 字号
% 添加图例
% (1)前面几个参数('B1'、'B2'、'B3')是图例中各数据的名称
% (2)如果默认的位置不太好看,我们可以通过'Location'参数指定图例的位置
% (3)"上下左右"分别对应"东南西北",例如"右上角"对应'northeast'
legend('B1', 'B2', 'B3', 'Location', 'northeast');
% 添加标题
title('The interaction between A & B');
最终效果图如下。
关于导出
(1)如果是用于组会汇报、期刊投稿,一般而言300dpi的位图就足够了(当然投稿的话,具体还是要根据期刊的要求),在绘图窗口中,选择“文件”——“导出设置”,在“渲染”页面中将“分辨率(dpi)”一栏的参数更改为“300”,便可将导出图像的大小更改为300dpi。
(2)如果是要打印成poster,推荐导出为矢量图格式,例如svg。
关于配色
可以在encycolorpedia这个网站上寻找,例如我们可以搜索“grey”,然后点击第一个条目。
在“阴影色调和暗色泽”一栏,便可以找到配色方案。
然后便可以在相应的代码中选择想要使用的颜色,“FaceColor”指的就是直方图中柱子的颜色,此外“EdgeColor”可以修改柱子框线的颜色,例如:
% 更改颜色
set(figure(1),'FaceColor','#a2a2a2', 'EdgeColor','#a2a2a2');
set(figure(2),'FaceColor','#c6c6c6', 'EdgeColor','#c6c6c6');
set(figure(3),'FaceColor','#ececec', 'EdgeColor','#ececec');
修改之后的效果如下。
网友评论