用matlab画散点图,并指定点与点之间的连线

用matlab画散点图不难,用scatter函数就行了,主要难在要指定点与点之间连线,关键在于使用gplot函数。

语法
gplot(A,Coordinates)
gplot(A,Coordinates,LineSpec)
[X,Y] = gplot(A,Coordinates)

说明
gplot 函数使用邻接矩阵绘制一组坐标。

gplot(A,Coordinates) 根据 n×n 邻接矩阵 A 绘制 Coordinates 中定义的节点的图,其中 n 是节点数。Coordinates 是一个 n×2 矩阵,其中 n 是节点数且每个坐标对组表示一个节点。

gplot(A,Coordinates,LineSpec) 使用 LineSpec 指定的线型、标记符号和颜色来绘制节点。

[X,Y] = gplot(A,Coordinates) 返回由 NaN 断开的向量 X 和 Y,而不生成绘图。使用 X 和 Y,可在以后使用 plot(X,Y) 生成绘图。要使用此语法,Coordinates 的类型必须为单精度或双精度。

提示
对于二维数据,Coordinates(i,:) = [x(i) y(i)] 表示节点 i,Coordinates(j,:) = [x(j)y(j)] 表示节点 j。如果节点 i 和 j 是连接的,则 A(i,j) 或 A(j,i) 是非零值;否则,A(i,j) 和 A(j,i) 是零值。

示例
使用星号绘制节点图。
绘制布基球碳分子的一半,并在每个节点放置星号:

k = 1:30;
[B,XY] = bucky;
gplot(B(k,k),XY(k,:),’-*’)
axis square

仿真结果
在这里插入图片描述

可以将邻接矩阵用matlab导入画出更复杂的连接,实现代码如下:

一、部分matlab代码

%% 导入数据
%%一级节点+二级节点(自动)
data = xlsread('C:\Users\Administrator\Desktop\zuobiao.xlsx','Sheet1');
data2 = xlsread('C:\Users\Administrator\Desktop\zuobiao.xlsx','Sheet4');
data3 = xlsread('C:\Users\Administrator\Desktop\zuobiao.xlsx','Sheet5');
data4 = xlsread('C:\Users\Administrator\Desktop\AA.xlsx','Sheet2');
data5 = xlsread('C:\Users\Administrator\Desktop\AA.xlsx','Sheet4');
%% 将导入的数组分配给列变量名称
VarName1 = data(:,1);
VarName2 = data(:,2);
VarName3 = data3(:,4);
VarName4 = data3(:,5);
VarName5 = data3(:,1);
VarName6 = data3(:,2);
%各区域中心位置
% scatter(VarName1,VarName2,'b')
% hold on;
%%二级节点位置
scatter(VarName3,VarName4,'k+')
hold on;
%%一级节点位置
scatter(VarName5,VarName6,'bs')
hold on;
%%物流园区位置
scatter(data3(:,7),data3(:,8),'k*')
hold on;
xlabel('x(m)')
ylabel('y(m)')
%画线路图
A=data4(1:13,1:13);
Coordinates=data3(1:13,10:11);
gplot(A,Coordinates,'r-')
hold on;
A2=data5(1:35,1:35);
Coordinates2=data3(1:35,13:14);
gplot(A2,Coordinates2,'b-')
%划范围
for i=[1:1:9]
    plot1(VarName5(i,1),VarName6(i,1),3000)
end

二、仿真结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/heavenmark/article/details/82794488
今日推荐