在上一篇文章中,分享了Matlab三维散点图的绘制模板:
假如我们有这样一组数据,其每个离散点(x, y, z)都对应着一个特征,比如高程、温度、湿度、密度、曲率、坡度、粗糙度等。
如果我们想在绘制这些离散点的同时,根据这些特征进行赋色,应该怎么操作呢?
来看一下成品效果:
特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进行科研绘图的门槛,只需按照模板格式添加相应内容,即可得到满足大部分期刊以及学位论文格式要求的数据插图。如果觉得有用可以分享给你的朋友。
模板中最关键的部分内容:
1. 数据准备
此部分主要是读取数据,定义x,y,z以及特征向量f。
% 读取数据
load data.mat
% x坐标
x = data(:,1);
% y坐标
y = data(:,2);
% z坐标
z = data(:,3);
% 特征向量
f = data(:,3);
2. 颜色定义
由于需要根据特征的大小进行赋色,所以应采用渐变色配色。
这里直接用之前分享的addcolorplus工具的渐变色:
%% 颜色定义
map = addcolorplus(300);
3. 三维散点图(特征渲染赋色)绘制
使用‘scatter3’命令,绘制未经美化的三维散点图。
figure
scatter3(x, y, z, 5, f, 'Marker', '.')
hTitle = title('Scatter3Feature');
hXLabel = xlabel('XAxis');
hYLabel = ylabel('YAxis');
hZLabel = zlabel('ZAxis');
4. 细节优化
为了插图的美观,使用colormap命令赋上之前选择好的颜色。
% 赋色
colormap(map)
进一步,对坐标区边框、视角、颜色条、字体字号等进行调整:
% 坐标区调整
axis equal
set(gca, 'Box', 'on', ... % 边框
'XGrid', 'on', 'YGrid', 'on', ... % 网格
'TickDir', 'out', 'TickLength',[0.01 0.01], ... % 刻度
'XMinorTick', 'off', 'YMinorTick', 'off', ... % 小刻度
'XColor', [.1 .1 .1], 'YColor',[.1 .1 .1]) % 坐标轴颜色
view(40.19,23.28);
colorbar(gca,'Position',[0.13 0.24 0.040.18],...
'AxisLocation','in',...
'TickLength',0.08);
% 字体和字号
set(gca, 'FontName', 'Helvetica')
set([hXLabel, hYLabel, hZLabel],'FontName', 'AvantGarde')
set(gca, 'FontSize', 10)
set([hXLabel, hYLabel, hZLabel],'FontSize', 11)
set(hTitle, 'FontSize', 11, 'FontWeight' ,'bold')
colorbar(gca,'Position',[0.13 0.24 0.040.18],...
'AxisLocation','in',...
'TickLength',0.08);
% 背景颜色
set(gcf,'Color',[1 1 1])
最后,按照所需分辨率、格式输出图片。
%% 图片输出
print('test.png','-r300','-dpng')
也可以尝试其它配色:
完整代码:
特征渲染赋色的三维散点图