《数据驱动的网络分析》——6.5 可视化

简介:

本节书摘来自异步社区《数据驱动的网络分析》一书中的第6章,第6.5节,作者: 【美】Michael Collins 更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.5 可视化

R提供了现成的、极其强大的可视化能力,许多标准可视化可以用高级命令完成。在下面的例子中,我们将用一个正态分布样本制作直方图,并将结果显示在屏幕上。

第10章讨论各种可视化技术。在本节中,我们的重点是R可视化的各种功能,包括图像控制、保存和操纵。

6.5.1 可视化命令
R有许多高级可视化命令,可以绘制时间序列、直方图和柱状图。套件中的骨干命令是plot,它可以用于提供来源于散点图的多种图形:简单散点图、阶梯图和序列图。   表6-1列出了主要的图形名称,help命令对这些图形提供了说明。


b1961071faaca617fd6f78a1cda6819d460bd25b

6.5.2 可视化参数
控制可视化参数有两种主要机制。首先,几乎所有可视化命令都提供一组标准的选项参数。表6-2列出了主要的选项,可视化结果对比如图6-2所示。


38835db747a83f53db054f90cfd0bc6427abe10d


<a href=https://yqfile.alicdn.com/ba60dcb3eb5632daf41558c1c0fb643928bfb448.png" >

可视化选项也可以使用par函数控制,该函数提供了大量特殊选项,可以管理轴尺寸、点类型、字体选择等。par采用很多选项,你可以通过help(par)了解。表6-3提供了一些较为重要的选项。

> #我们将使用par绘制一个3列2行的矩阵,然后用其他par值,为矩阵的3个单元填入不同的图形
> par(mfcol=c(2,3))
> #绘制默认的直方图
> hist(sample_rnorm,main='Sample Histogram')
> #现在我们转移到第2行中间的一列
> par(mfg=c(2,2,2,3))
> #将轴的尺寸改为默认值的一半
> par(cex.axis=0.5)
> #将轴改为蓝色
> par(col.axis='blue')
> #将图形变成红色
> par(col = 'red')
> #现在绘制散点图
> plot(sample_rnorm,main='Sample scatter')
> #在我们绘制完该图之后,它将自动移到第3行第1列,恢复轴尺寸
> par(cex.axis=1.0)
> #将点类型更改为散点图。使用help(points)获取PCH数量的列表
> par(pch=24)
> plot(sample_rnorm,main='Sample Scatter with New Points')


ca26cf8ffc6cea906e0f9fe01dafe696a298e90a

线类型

pch

数字

点类型

a cex和col有一些子参数:.axis、.main、.lab和.sub,它们影响对应的元素。例如,cex.main是标题的相对字体大小

b 颜色字符串可以是red这样的字符串,也可以是十六进制RGB字符串,形式为#RRGGBB

6.5.3 可视化注解
在绘制可视化时,我通常喜欢使用某种模型或者注解和可视化形式对比。例如,如果我要比较可视化形式和一个正态分布,应该将对应的正态分布画在屏幕上,将其与直方图的结果比较。

R 提供了在图形上绘制文本的一些支持函数。这些函数包括 lines、points、abline、polygon和text。和高级绘图函数不同,这些函数直接写入屏幕,而不重置图像。在本节中,我们将说明如何使用lines和text注解图像。

我们将首先生成一个常用场景下的直方图:在一个/22(1024台主机)网络上的扫描流量加上典型用户流量。观测参数是主机数量,我们假定在正常的情况下,该值呈正态分布,平均值为280台主机,标准差为30。在每次扫描中,会发生10种事件中的一种。在扫描期间,测得的主机数量总为1024,因为扫描器会扫描网络上的每一台主机。

> #首先,我们通过rnorm,用高斯分布建立典型活动的模型
> normal_activity <- rnorm(300,280,30)
> #然后,我们创建一个攻击数量的矢量,每个攻击都是针对1024台主机
> attack_activity <- rep(1024,30)
> #将两者连接起来,因为我们关注的是主机数量而不是时间相关性,所以不关心顺序
> activity_vector<-c(normal_activity, attack_activity)
> hist(activity_vector,breaks=50,xlab='Hosts observed',\
 ylab='Probability of Occurence',prob=T,main='Simulated Scan Activity')

注意直方图中的breaks和prob参数,breaks控制直方图中统计堆(Bin)的数量,这在你处理长尾分布(如例中的模型)时特别重要。prob根据密度而不是频率来绘制柱状图。

现在,我们将配上一条曲线。为此,我们为lines函数创建一个x值矢量和一个y值矢量。x值平均分布到观测分布覆盖的范围中,而y值用dnom函数得出:

> xpoints<-seq(min(activity_vector),max(activity_vector),length=50)
> #给定x值(xpoints)和使用来自activity矢量的均值和标准差的正太分布模型,
> #用dnorm计算对应的y值。该值的匹配情况很差,因为攻击使流量出现偏差。
> ypoints<-dnorm(xpoints,mean=mean(activity_vector),sd=sd(activity_vector))
> #绘制直方图,这将清除画布
> hist(activity_vector,breaks=50,xlab='Hosts observed',\
 ylab='Density',prob=T,main='Simulated Scan Activity')
> #用lines绘制匹配曲线
> lines(xpoints,ypoints,lwd=2)
> #绘制文本。x和y值从图中得出。
> text(550,0.010,"This is an example of a fit")

6.5.4 导出可视化
R可视化在设备(Device)上输出,可以使用不同函数调用。默认设备在Unix系统上为X11,在Mac OS X上为quartz,在Windows上为win.graph。R的Devices(注意大小写)帮助提供了当前平台可用设备的列表。

要打印R输出,打开一个输出设备(如png、jpeg或pdf),然后正常编写命令。结果将写入设备文件,直到你用dev.off()解除设备。此时,你应该再次调用默认设备(不需要参数)。

> #将直方图输出到文件'histogram.png'
> png(file='histogram.png')
> hist(rnorm(200,50,20))
> dev.off()
> quartz()
相关文章
|
16天前
|
机器学习/深度学习 自然语言处理 数据可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
|
17天前
|
数据可视化 数据挖掘
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
|
6天前
|
机器学习/深度学习 数据可视化 算法
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
|
6天前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
6天前
|
机器学习/深度学习 数据可视化 算法
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例1
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言神经网络模型金融应用预测上证指数时间序列可视化
R语言神经网络模型金融应用预测上证指数时间序列可视化
|
6天前
|
机器学习/深度学习 数据可视化 算法
SPSS Modeler决策树和神经网络模型对淘宝店铺服装销量数据预测可视化|数据分享
SPSS Modeler决策树和神经网络模型对淘宝店铺服装销量数据预测可视化|数据分享
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
|
6天前
|
数据采集 安全 数据处理
疫情期间航空网络演变复杂网络可视化
疫情期间航空网络演变复杂网络可视化
|
12天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化