第一次用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版权协议,转载请附上原文出处链接和本声明。