数据的可视化

一、实验目的

理解和掌握 Matlab 实现数据可视化绘图的一些主要方法,包括绘制 Voronoi 图、区域图、绘制填色多边形等。掌握力导向布局的基本原理和实现方法。

二、实验原理

①网络数据可视化要解决的问题:

1.筹备工作

2.对数据具有敏感性

3.以简明扼要的图表说明复杂的数据关系

4.选择适当的图表

5.处理图表的细节

②力导向布局的基本原理:

力导向算法是一种常用的绘制一般网状结构的方法。它仿真物理力学的概念,对网络图中任意一个节点,都受到引力及斥力。引力是由与此节点有边相连接的每个邻居所提供的合力,其意义是节点与其邻居之间的距离不会太远;斥力是由整个网络图中除了本身以外的节点所提供,为了让任意两节点不会因距离太近而产生重叠的现象,也因此整个网络图不会太密集而影响视觉。算法的终止通过给定节点的初始位置,放人此力导向的物理模型中,系统自动调整节点位置,直至达到稳定条件才结束。对于簇状数据,出现了一种与力导向结合的方法,此方法是一种基于将一个图划分为多个子图的多级技术.开始先构建最小的子图,使用力导向布局调整节点的位置.然后在下一层级的子图划分中使用调整好后的结果。

三、实验内容和步骤

1. 在二维平面内随机画出 30 个点,并据此画出 Voronoi 图。

说明:rand 产生随机数,delaunay 函数生成三角形网,voronoi 画 voronoi 图。 voronoi 图:又叫泰森多边形图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。Delaunay 三角网的两个重要的性质:

空外接圆性质:任何一个 Delaunay 三角形的外接圆不包含其他任何点。最大的最小角性质:Delaunay 三角网中三角形的最小角度是最大的,一个简明的解释: 2 个相邻三角形构成的凸四边形的对角线在相互交换后,6 个内角的最小角不再增大。

2.银行内 4 个服务台 5 个时段服务的顾客数如表 1 所示,据此画出区域图。

说明:figure 创建画图窗口,area 函数画区域图,set 指定横坐标,gtext 函数。

 

3.在三维空间内,x 和y 的取值都属于{-2,-1.8,-1.6,-1.4......1.4,1.6,1.8,2}(步长为 0.2),z = x×exp(-x 2 -y 2 )。画出由 x,y,z 构成的二维等高线、三维等高线、在二维等高线上标出数值,在二维等高线之间填充颜色。

说明:meshgrid函数生成网格矩阵;figure函数;subplot函数;contour函数利用矩阵所给的值生成二维轮廓线;clabel函数利用轮廓矩阵生成标签并在当前图形中显示;contour3函数利用矩阵所给的值生成三维轮廓线;contourf函数显示二维轮廓图并用色彩填充个轮廓线的间隙;

4.数据集文件“relation685.xlsx”记录了 685 个节点与哪些节点有弹簧力关系。假设这些节点的初始位置是均匀地分布在边长为 1 的正方形内。用力导向 (Force-directed) 布局方法,考虑节点的弹簧力和斥力,得到在至少 3 种迭代次数下的节点布局图。

说明:int32(xlsread)读取xls文件;unifrnd函数指定节点初始位置的函数;plot函数画图;hold on;

四、实验过程原始记录(数据、图表、计算、代码等)

 

实验一:
%% ========= Voronoi图和三角剖分========
%用Voronoi多边形勾画每个点的最近邻范围。Voronoi多边形在计算几何、模式识别中有重要应用。三角形顶点所在多边形的三条公共边是剖分三角形边的垂直平分线。
n=30;
A=rand(n,1)-0.5;
B=rand(n,1)-0.5; % 产生 30 个随机点
T=delaunay(A,B); % 求相邻三点组
T=[T T(:,1)]; %为使三点剖分三角形封闭而采取的措施
voronoi(A,B) % 画 Voronoi 图
hold on;axis square
fill(A(T(10,:)),B(T(10,:)),'y'); % 画一个剖分三角形
voronoi(A,B) % 重画 Voronoi 图,避免线被覆盖
title('Voronoi图和三角剖分');

实验二:
x=1:2:9;
profits1=[88 75 84 93 77];
profits2=[51 64 54 56 68];
profits3=[42 54 34 25 24];
profits4=[26 38 18 15 4];
area(x,profits1,'facecolor',[0.5 0.9 0.6],...
'edgecolor','b',...
'linewidth',3)
hold on
area(x,profits2,'facecolor',[0.9 0.85 0.7],...
'edgecolor','y',...
'linewidth',3)
hold on
area(x,profits3,'facecolor',[0.3 0.6 0.7],...
'edgecolor','r',...
'linewidth',3)
hold on
area(x,profits4,'facecolor',[0.6 0.5 0.9],...
'edgecolor','m',...
'linewidth',3)
hold off
set(gca, 'xTick', [1:2:9]);
set(gca,'XTickLabel',{'8:00-9:00','9:00-10:00','10:00-11:00','11:00-12:00','12:00-13:00'})

set(gca,'layer','top')
gtext('\leftarrowA服务台')
gtext('\leftarrowB服务台')
gtext('\leftarrowC服务台')
gtext('\leftarrowD服务台')
xlabel('','fontsize',16);
ylabel('服务顾客数','fontsize',10);
title('银行柜台服务顾客区域图');

实验三:
% 定义 x, y 的范围和步长
x = -2:0.2:2;
y = -2:0.2:2;
% 生成网格点
[X,Y] = meshgrid(x,y);
% 计算 z
Z = X.*exp(-X.^2-Y.^2);
% 画二维等高线图
figure
subplot(221)
contour(X,Y,Z)
% 在等高线上标出数值
clabel(contour(X,Y,Z),'FontSize',10)

% 在等高线之间填充颜色
colormap(jet)
colorbar
hold on
contourf(X,Y,Z)
% 画三维等高线图
subplot(222)
contour3(X,Y,Z)
% 画三维曲面图
subplot(223)
surf(X,Y,Z)

实验四:
clear all 
close all
clc

%力导向 (Force-directed) 布局的代码,考虑了弹簧力和斥力

DATA = int32(xlsread('relation685.xlsx',1,'A1:B1282'))+1; % 总共685个节点,这个表反映了哪些节点间有弹簧力关系。 
position=unifrnd(0,1,685,2); %节点初始位置

% 力导向 (Force-directed) 布局前的节点布局图
figure(1)
for i = 1:1282
s = DATA(i,1);
d = DATA(i,2);
x = [position(s,1);position(d,1)];
y = [position(s,2);position(d,2)];
plot(x,y,'o-b');
hold on;
end

K_r = 0.1; %斥力常量
K_s = 0.025; %弹力常量
L = 2; % 弹簧自然长度,这里都设置成一样长。也可以根据关系的亲密度逐个设置。
delta_t = 10; %步长
MaxLength =8; %最大距离控制
tic

for N = 1:300 %迭代次数
N
%计算所有-节点间斥力
force = zeros(685,2);
for m = 1:684
for n = m+1:685
dx = position(n,1)-position(m,1); %节点在x坐标的差值
dy = position(n,2)-position(m,2); %节点在y坐标的差值
if dx~=0 || dy~=0
dist2 = dx^2+dy^2;
dist = sqrt(dist2); % 节点间距离
f = K_r/dist2; %斥力
fx = f*dx/dist; %x方向斥力
fy = f*dy/dist; %y方向斥力
force(m,1) = force(m,1)-fx; %节点n的x方向斥力
force(m,2) = force(m,2)-fy; %节点n的y方向斥力
force(n,1) = force(n,1)+fx; %节点n的x方向斥力
force(n,2) = force(n,2)+fy; %节点n的y方向斥力
end
end
end
%计算相邻节点间弹力
for m = 2:685
ne=find(DATA(:,1)==m); % 逐一判断节点m和哪些几点构成弹力关系
for n = 1:length(ne) % 节点m和一个以上节点构成弹力关系,则开始算弹力
dx = position(DATA(ne(n),2),1)-position(m,1); %节点在x坐标的差值
dy = position(DATA(ne(n),2),2)-position(m,2); %节点在x坐标的差值
if dx~=0||dy~=0
dist = sqrt(dx^2+dy^2); % 节点间距离
f = K_s*(dist-L); %弹力
fx = f*dx/dist; %x方向弹力
fy = f*dy/dist; %y方向弹力
force(m,1) = force(m,1)+fx; %节点m的x方向斥力
force(m,2) = force(m,2)+fy; %节点m的y方向斥力
force(DATA(ne(n),2),1) = force(DATA(ne(n),2),1)-fx; %节点n的x方向斥力
force(DATA(ne(n),2),2) = force(DATA(ne(n),2),2)-fy; %节点n的y方向斥力
end
end
end
%更新位置
for i = 2:685
dx = delta_t*force(i,1);
dy = delta_t*force(i,2);
displacement = dx^2+dy^2;
if(displacement>MaxLength)
s = sqrt(MaxLength/displacement);
dx = s*dx;
dy = s*dy;
end
position(i,1) = position(i,1)+dx;
position(i,2) = position(i,2)+dy;
end
% 力导向 (Force-directed) 布局后的节点分布图
if N == 50 
figure(2)
for i = 1:1282
s = DATA(i,1);
d = DATA(i,2);
x = [position(s,1);position(d,1)];
y = [position(s,2);position(d,2)];
plot(x,y,'o-b');
hold on;
end
end
% 力导向 (Force-directed) 布局后的节点分布图
if N == 100
figure(3)
for i = 1:1282
s = DATA(i,1);
d = DATA(i,2);
x = [position(s,1);position(d,1)];
y = [position(s,2);position(d,2)];
plot(x,y,'o-b');
hold on;
end
end
end
toc

% 力导向 (Force-directed) 布局后的节点分布图
figure(4)
for i = 1:1282
s = DATA(i,1);
d = DATA(i,2);
x = [position(s,1);position(d,1)];
y = [position(s,2);position(d,2)];
plot(x,y,'o-b');
hold on;
end

 五、实验结果及分析(仿真结果等)

实验一:

实验二:

 

实验三:

 

实验四:
 

分析:当N在一个相对较小的范围内时,随着N的增大,所绘制的力导向图变化较大,效果也变得越好,但是当N较大时,随着N的增大,力导向图的变化就不大了,但有收缩的趋势(变得扁平了),原因可能是此时引力的作用占据了主导地位。

六、思考

  1. Voronoi 图的定义和特点是什么?

Voronoi 图是基于一组点集的分割图形,其中每个图形表示离其对应的点最近的所有点的区域,这些区域被称为 Voronoi 单元或 Thiessen 多边形。Voronoi 图的特点是:

对于任意点,其 Voronoi 单元都是凸多边形;

每个 Voronoi 单元内部的所有点到该单元对应的点的距离都小于到其它点的距离;

Voronoi 单元之间的边界是由两个最近点之间的垂线平分而成的。

2. 区域图的定义和特点是什么?

区域图是在平面上由一些点和一些线段组成的图形,其中每个区域都是由一些线段和若干个点所围成的。

区域图的特点是:

每个区域都是连通的;

每个区域内部的所有点到区域边界上的所有点的距离都相等;

区域之间的边界是由两个最近点之间的垂线平分而成的。

3.网络关系有哪些重要性质?

连通性:网络中的任意两个节点都可以通过一些路径相互到达;

带宽:网络中的带宽是指网络中最小的容量限制,即限制网络中可以通过的最大数据量;

可靠性:网络中的可靠性是指网络中的节点和链路的故障率;

路径选择:网络中的路径选择是指在网络中选择一条最佳路径,例如最短路径、最快路径等;

拓扑结构:网络中的拓扑结构是指节点和链路之间的连接关系,如树形结构、环形结构、网状结构等。

4. 在实验内容 4 中,当随着迭代次数增加,节点布局呈现怎样的变化规律?为什么?

当N在一个相对较小的范围内时,随着N的增大,所绘制的力导向图变化较大,效果也变得越好,但是当N较大时,随着N的增大,力导向图的变化就不大了,但有收缩的趋势(变得扁平了),原因可能是此时引力的作用占据了主导地位。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据可视化dataset是指包含可视化元素的数据集。通常,数据集是由各种数据点或观测值组成的,而数据可视化dataset则是用图表、图形、地图等可视化工具将这些数据点呈现出来的。数据可视化dataset的目的是帮助人们更好地理解和解释数据,从而支持决策和发现数据中的模式或关联性。 数据可视化可以通过各种图表和图形来展示数据。例如,柱状图可以用于比较不同组的数据值,折线图可以显示数据随时间变化的趋势,散点图可以展示两个变量之间的关系等等。此外,还可以使用地图来显示地理信息和空间分布。通过将数据转化为视觉元素,人们可以更直观地理解数据的含义和趋势。 数据可视化dataset的好处是提供可视化的洞察和直观性。通过将数据转化为图表和图形,人们可以更容易地发现数据中的模式、趋势、异常值等。此外,数据可视化还可以帮助人们在大量数据中快速识别和理解关键点,避免过度依赖复杂的数据分析工具。 数据可视化dataset还可以促进沟通和共享数据的目的。通过使用可视化工具,人们可以更容易地与他人分享和解释数据,促进相互之间的理解和交流。此外,数据可视化还可以通过提供互动性的功能(例如,通过悬停显示数据点的详细信息)来进一步增强对数据的理解和发现。 总之,数据可视化dataset是一种将数据转化为可视化元素的方法,旨在帮助人们更好地理解和解释数据。通过使用各种图表、图形和地图等可视化工具,人们可以更直观地发现数据的模式、趋势和异常值,并促进数据的交流和共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都不会…

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值