Matlab关于画数据网格图

本文详细介绍了Matlab中surf、plotyy、scatter3等绘图函数的使用方法,包括三维表面图、双纵坐标图及散点图的绘制,并展示了如何调整字体大小、颜色和标记样式,适用于数据可视化和机器学习结果展示。

1、surf(Z);

Z为一个矩阵,如果Z是向量,那么就需要先将其转换为矩阵

reshape(Z,[length(X),length(Y)]);  X和Y为你的横坐标取值个数。

具体代码调用格式如下

Z=reshape(acc,[length(lambda2),length(lambda1)]);
surf(Z);
xlabel('\alpha','fontsize',20);
set(gca, 'xtick',1:2:11);
set(gca,'xticklabel',{'10^-5','10^-3','10^-1','10^1','10^3','10^5'})
ylabel('\beta','fontsize',20);
set(gca, 'ytick',1:2:11);
set(gca,'yticklabel',{'10^-5','10^-3','10^-1','10^1','10^3','10^5'});
zlabel('Classification accuracy (%)','fontsize',20);
colorbar('fontsize',12);
 view(135,55); title('AR','fontsize',20); print('-depsc','AR_4.eps');

 2、matlab plotyy 一条横轴,两条纵轴

clear all
clc
figure;
COIL20_convergence_Acc = xlsread(‘收敛曲线.xls');
obj = COIL20_convergence_Acc(:,1)';
eachacc = COIL20_convergence_Acc(:,2)';
x = 1:size(obj,2);
[AX,H1,H2] = plotyy(x,obj,x,eachacc,'plot');
legend('Objective function value','Classification accuracy');
set(gca,'fontsize',14);  
% set(get(AX(1),'Xlabel'),'String','Number of iterations');
set(get(AX(1),'Ylabel'),'String','Objective function value','fontsize',14,'color','k');
set(get(AX(2),'Ylabel'),'String','Classification accuracy','fontsize',14,'color','k');
xlabel('Number of iterations');
set(get(gca,'xlabel'),'fontsize',14);                    % 设置标尺字体大小
set(H1,'marker','.'); 
set(H2,'marker','.'); 

3、scatter3, 画散点图

对于一个n_sample*dim_fea的数据(1000*3维数据)

调用格式为:scatter3(X(:,1),X(:,2),X(:,3),'b','o','filled');    % 其中b为颜色,o为用圆圈标记,filled表示实心

scatter(x,y,a,c)  : a为区域尺寸, c为数据点颜色(向量)。

scatter(LPP_data(:,1),LPP_data(:,2),12,1:1:1000,'+');

PCA LPP NPE对于随机散点图降维显示结果如下: 部分降维代码见:http://lvdmaaten.github.io/drtoolbox/#download

% 散点图 降维学习
clear all
clc
addpath('G:\机器学习\代码和数据集\代码\降维\drtoolbox\techniques\');
% load twinpeaks;
[X, labels, t] = generate_data('twinpeaks',1000);   % swiss
% load swiss
figure;
scatter3(X(:,1),X(:,2),X(:,3),12,1:1:1000,'o'); title('original twinpeaks');

% PCA
options.ReducedDim = 2;
[eigvector, eigvalue, meanData, PCA_data] = PCA(X, options);
figure;
scatter(PCA_data(:,1),PCA_data(:,2),12,1:1:1000,'o'); title('PCA twinpeaks');

% [mappedX, mapping] = pca(X, 2);

% NPE
no_dims = 2;
k = 10;
[NPE_data, mapping] = npe(X, no_dims, k);
figure;
scatter(NPE_data(:,1),NPE_data(:,2),12,1:1:1000,'o'); title('NPE twinpeaks');

% LPP
[LPP_data, mapping] = lpp(X, no_dims, k);
figure;
% scatter(LPP_data(:,1),LPP_data(:,2),12,'b','.'); title('LPP twinpeaks');
% figure;
scatter(LPP_data(:,1),LPP_data(:,2),12,1:1:1000,'o'); title('LPP twinpeaks');

  

4、生成颜色矩阵 colour = hsv(num)

5、按照类标来显示散度图

% 散点图 降维学习
clear all
clc
addpath('G:\机器学习\代码和数据集\代码\降维\drtoolbox\techniques\');
% load twinpeaks;
[X, labels, t] = generate_data('twinpeaks',1000);   % swiss
% load swiss
figure;
indx = find(labels == -1);
scatter3(X(indx,1),X(indx,2),X(indx,3),12,'b','o'); 
hold on 
indx1 = find(labels == 0);
scatter3(X(indx1,1),X(indx1,2),X(indx1,3),12,'k','o'); title('original twinpeaks');


% PCA
options.ReducedDim = 2;
[eigvector, eigvalue, meanData, PCA_data] = PCA(X, options);
figure;
scatter(PCA_data(indx,1),PCA_data(indx,2),12,'b','o');
hold on 
scatter(PCA_data(indx1,1),PCA_data(indx1,2),12,'k','o'); 
title('PCA twinpeaks');

% [mappedX, mapping] = pca(X, 2);

% NPE
no_dims = 2;
k = 10;
[NPE_data, mapping] = npe(X, no_dims, k);
figure;
scatter(NPE_data(indx,1),NPE_data(indx,2),12,'b','o');
hold on 
scatter(NPE_data(indx1,1),NPE_data(indx1,2),12,'k','o');
title('NPE twinpeaks');

% LPP
[LPP_data, mapping] = lpp(X, no_dims, k);
figure;
% scatter(LPP_data(:,1),LPP_data(:,2),12,'b','.'); title('LPP twinpeaks');
% figure;
scatter(LPP_data(indx,1),LPP_data(indx,2),12,'b','o'); 
hold on 
scatter(LPP_data(indx1,1),LPP_data(indx1,2),12,'k','o'); 
title('LPP twinpeaks');

  

6

 

 

未完待续

转载于:https://www.cnblogs.com/Jerry-PR/p/5035104.html

### 使用 Matlab 绘制 FVCOM 据的断面 要在 Matlab 中绘制 FVCOM 据的断面,可以按照以下方法实现。以下是详细的说明以及示例代码。 #### 据准备 FVCOM 的据通常由节点坐标 (`lon`, `lat`) 和三角形连接矩阵组成。这些据可以通过读取 `.nc` 文件或其他格式文件获取。假设已经加载了以下变量: - `lon`: 节点经度组。 - `lat`: 节点纬度组。 - `tri`: 三角形连接矩阵(每行表示三个节点索引)。 - `zeta`: 水位高度或某一物理量的空间分布。 如果需要绘制特定方向上的断面,则还需要定义一条路径来提取该方向的据。 --- #### 示例代码 ```matlab % 假设已知 lon, lat, tri, zeta 变量 clear; clc; % 定义断面路径 (起点和终点经纬度) start_point = [-70.5, 41]; % [Lon_start, Lat_start] end_point = [-69.5, 42]; % [Lon_end, Lat_end] % 计算路径长度并插值到路径上 n_points = 100; % 插值点 path_lon = linspace(start_point(1), end_point(1), n_points); path_lat = linspace(start_point(2), end_point(2), n_points); % 查找路径附近的格点 dist_threshold = 0.1; % 阈值距离 (单位:度) dists = sqrt((repmat(path_lon', size(lon)) - repmat(lon(:), 1, length(path_lon))).^2 ... + (repmat(path_lat', size(lat)) - repmat(lat(:), 1, length(path_lat))).^2); min_dists = min(dists,[],1); % 对每个路径点找到最近的距离 nearest_indices = find(min_dists < dist_threshold); % 找到阈值范围内的点 if isempty(nearest_indices) error('未找到符合条件的格点'); end % 提取对应的水深或物理量 selected_zeta = zeta(nearest_indices); % 绘制断面 figure; plot(selected_zeta, 'b-o'); grid on; xlabel('沿路径位置编号'); ylabel('Zeta 值'); title('FVCOM 断面'); % 如果有更多维度据(如深度),可以用 surf 或 mesh 函绘制成三维形 ``` --- #### 关键点解释 1. **路径定义**: 用户可以根据需求自定义起始点和终止点的位置[^1]。通过 `linspace` 函生成一系列均匀分布在路径上的点。 2. **查找附近格点**: 利用欧几里得距离公式计算路径点与所有格点之间的距离,并筛选出满足条件的点集合[^1]。 3. **插值处理**: 当路径点周围存在多个候选格点时,可以选择平均值或者最邻近法进行插值操作[^1]。 4. **可视化**: 最终结果可通过二维折线展示出来,也可以扩展至三维表面形式以便观察更多信息[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值