这里三维图参考了博客1:https://blog.csdn.net/weixin_41649786/article/details/81867092和
博客2:https://blog.csdn.net/LG1259156776/article/details/47761293
通过查询网上的资料,整理写成了matlab读取excel数据,画三维图,具体程序如下:
clear;
filename=‘数据.xlsx’;
sheet=5;
xlRange=‘B3:K25’;
%[num]=xlsread(filename,sheet,xlRange);
[num]= xlsread(filename,sheet,xlRange);
%补充,可以读取成txt,num,raw三种格式文件
[row,col]=size(num);
%选择要读取的列数,并写到data中去
data=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19,20];
%x=zeros(row,col);
%这里选择数据作为x变量
x=num(1:row,data(7));
x1=log10(x);
xmax=max(x1);
xmin=min(x1);
%设置x的间隔值
delta_x=xmax-xmin;
inter_x=delta_x/row;
%这里选择数据作为y变量
y=num(1:row,data(8));
y1=log10(y);
ymax=max(y1);
ymin=min(y1);
%设置y的间隔值
delta_y=ymax-ymin;
inter_y=delta_y/row;
%这里选择**数据作为z数据
z=num(1:row,data(10));
z1=log10(z);
zmax=max(z1);
zmin=min(z1);
delta_z=zmax-zmin;
inter_z=delta_z/row;
%重构三维数据,画图
%将x,y轴网格化,重构用于画图的x,y数据;
[xq,yq]=meshgrid(xmin:inter_x:xmax,ymin:inter_y:ymax);
%插值,重构用于插值的Z轴数据;
zq=griddata(x1,y1,z1,xq,yq);
figure
surf(xq,yq,zq);
hold on
xlabel(‘log10(chl a concentration)’);
ylabel(‘log10(suspended concentration)’);
zlabel(‘log10(bacteria abundance)’);
plot3(x1,y1,z1,‘o’);
结果图:
如果存在问题,或者需要讨论的,可以留言相互讨论下。程序参考了好多网上的资料,如果你发现存在侵权,可以联系博主删除。
|
请发表评论