Matlab画三维立体网状图形(类似魔方)

第一次用Matlab画这种三维立体的图形,搞了半天发现这个样例图片真的是个坑!发现选择Matlab画这种图真的是大材小用了。

样例图片:


Matlab中有很多绘制三维立体图形的函数,搜了很多资料之后发现,slice函数比较适合画这种网状图,上代码:

[x,y,z]=meshgrid(0:1:4,0:1:5,0:1:4);
v=x.*y; %三维立体图形
xs=[0,1,2,3,4];
ys=[0,1,2,3,4,5];
zs=[0,1,2,3,4];
re=[1 1 1];         %设置颜色为白色
colormap(re)        
set(gca,'XDir','reverse')%对X方向反转
%set(gca,'YDir','reverse')%对Y方向反转

slice(x,y,z,v,xs,ys,zs);%用切片的方式绘制网格图形

xlabel('time(季度)');
ylabel('item(类型)');
zlabel('location(城市)');
x1=1-0.5;
x2=2-0.5;
x3=3-0.5;
x4=4-0.5;
x5=5-0.5;
set(gca,'xaxislocation','top'); %设置将x轴坐标标在图形上方,好像没什么作用
view(-84, -52); %改变图形显示的视角

%h=gca; 
%rotate(h,[5,4],-60);              % 尝试沿坐标轴旋转图形
%rotate(h,[0,5],330);  
set(gca,'ytick',[x1,x2,x3,x4,x5]);  %设置y轴的坐标标记
set(gca,'YTickLabel',{'QQ邮箱','126邮箱','163邮箱','Gmail','Outlook'});

set(gca,'ztick',[x1,x2,x3,x4]); %设置z轴的坐标标记
set(gca,'ZTickLabel',{'北京','上海','广州','深圳'});

set(gca,'xtick',[x1,x2,x3,x4]);%设置x轴的坐标标记
set(gca,'XTickLabel',{'Q1','Q2','Q3','Q4'});
其中有一些显示视角的调整,在调整之前如下图:


调整了半天发现,还是无法找到最佳角度,最终显示如下图所示:


仅通过此篇博客告诉读者,不要用Matlab画这种三维立体统计图,实在是大材小用了,可以考虑其他简单的画图软件。不必非得用代码。





版权声明:本文为shichunxue原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。