上一期文章中,分享了Matlab帕累托图的绘制模板:
这一次,再来分享一种特殊的线图:平行坐标图。
‘平行坐标图是一种通常的可视化方法,用于对高维几何和多元数据的可视化……为了克服传统的笛卡尔直角坐标系容易耗尽空间、难以表达三维以上数据的问题,平行坐标图将高维数据的各个变量用一系列相互平行的坐标轴表示,变量值对应轴上位置。为了反映变化趋势和各个变量间相互关系,往往将描述不同变量的各点连接成折线……平行坐标图的一个显著优点是其具有良好的数学基础,其射影几何解释和对偶特性使它很适合用于可视化数据分析。’——百度百科
先来看一下成品效果:
特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进行科研绘图的门槛,只需按照模板格式添加相应内容,即可得到满足大部分期刊以及学位论文格式要求的数据插图。如果觉得有用可以分享给你的朋友。
模板中最关键的部分内容:
1. 数据准备
此部分主要是读取原始数据。
% 读取数据
tbl = readtable('TemperatureData.csv');
tbl.Year = categorical(tbl.Year);
NoDataMonths = {'September','October','November','December','August'};
NoDataMonthsIdx = ismember(tbl.Month,NoDataMonths);
tbl(NoDataMonthsIdx,:) = [];
2. 颜色定义
颜色搭配比较考验个人审美,需要多加尝试。
这里直接使用TheColor配色工具中的SCI配色库:
%% 颜色定义
% 对比色
% C = TheColor('sci',999);
% C = TheColor('sci',2037);
% 渐变色
C = TheColor('sci',2064,'map',7);
% C = TheColor('sci',1701,'map',7);
特别提示:此处TheColor仅为作图方便,可以替换为自己的配色。
3. 平行坐标图绘制
使用‘parallelplot命令,绘制未经美化的平行坐标图。
p = parallelplot(tbl);
p.Title = 'Temperature Data';
4. 细节优化
为了插图的美观,对平行坐标图的线属性进行调整:
%% 细节优化
p.GroupVariable = 'Month';
p.CoordinateVariables = [1 2 4];
p.DataNormalization = 'none';
p.Color = C;
categoricalMonth = categorical(p.SourceTable.Month);
Order = {'January','February','March','April','May','June','July'};
OrderMonth = reordercats(categoricalMonth,Order);
p.SourceTable.Month = OrderMonth;
% 背景颜色
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');
也可以尝试其他配色:
以上。
Matlab平行坐标图