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

6.5 可视化

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

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

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

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

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')

线类型

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()
时间: 2024-09-24 18:06:44

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

《数据驱动的网络分析》——第6章 R安全分析简介

第6章 R安全分析简介 R是一个开源统计分析软件包,最初由奥克兰大学的Ross Ihaka和Robert Gentleman开发.R的设计者主要是统计学家和数据分析人员,与商业统计软件包(如S和SPSS)关联.R是用于探索性数据分析的工具包,它提供了统计建模和数据操纵能力.可视化和一个全功能的编程语言. R可以满足多种分析需求.分析工作需要某些工具来创建和操纵汇总原始数据的小型临时数据库.例如,从特定主机采集.按照服务分解的每小时流量汇总.这些数据表比原始数据更复杂,但是其目的不是为了最后发布-

《数据驱动的网络分析》——导读

内容提要传统的入侵检测和日志文件分析已经不再足以保护当今的复杂网络,本书讲解了多种网络流量数据集的采集和分析技术及工具,借助这些工具,可以迅速定位网络中的问题,并采取相应的行动,保障网络的运行安全. 本书分为3部分,共15章,内容包括数据采集的常规过程,用于采集网络流量的传感器,基于特定系统的传感器,数据存储和分析,使用互联网层次知识系统(SiLK)分析NetFlow数据,用于安全分析的R语言简介.入侵检测系统的工作机制以及实施,确定实施攻击的幕后真凶,探索性数据分析以及数据可视化,检查通信流量

《数据驱动的网络分析》——6.6 分析:统计假设检验

6.6 分析:统计假设检验 R设计用于为统计分析人员提供各种数据检查工具.本章迄今为止所讨论的编程功能都是达到该目的的手段.我们希望使用的R主要功能是通过识别统计显著特征,支持警报的构建(更多关于警报构建的讨论参见第7章). 识别对警报有用的属性,需要识别"重要"的行为,对"重要"有各种不同的定义.R提供了许多用于研究数据并对数据进行统计检验的工具套件.学习这些工具的使用,需要理解R工具提供的常见测试统计数字.本章余下的部分重点关注这些任务. 6.6.1 假设检验统

《数据驱动的网络分析》——2.3 NetFlow

2.3 NetFlow NetFlow是Cisco开发的流量汇总标准,最初用于网络服务记账.虽然本意不是为了安全性,但是人们臆测NetFlow对此有益,因为它提供了紧凑的网络通信会话摘要,可以快速访问,并且包含了以相对紧凑的格式保存的最高价值信息.从1999年flow-tools软件包发布以来,NetFlow越来越多地用于安全分析,已经开发出了各种工具,这些工具为NetFlow提供了更多的字段,例如可选择的载荷片段. NetFlow的核心是流(Flow)的概念,它与TCP会话近似.回忆前面介绍的

《数据驱动的网络分析》——6.2 R语言基础知识

6.2 R语言基础知识 本节是R语言的速成教程.R是一种特性丰富的语言,我也只是略懂一二.但是,在本节结束时,你就能够编写简单的R程序,在命令行上运行,并将其保存为一个库. 6.2.1 R提示符 启动R,将会显示一个窗口和命令提示符.图6-1展示了一个R控制台的例子.如图所示,控制台主要是一个大的文本窗口,顶部的一系列按钮提供了辅助功能.注意按钮栏下的两个文本框,第一个显示当前工作目录,第二个是帮助功能.R有很好的文档,所以一定要习惯使用帮助框. 在图6-1中,我输入了几条简单的命令: > s<

《数据驱动的网络分析》——第2章 网络传感器2.1 网络分层及其对测量的影响

第2章 网络传感器 网络传感器直接从网络通信中采集数据,不需要中介应用程序作为代理,这使其不同于第3章中讨论的基于主机传感器.这方面的例子包括路由器上的NetFlow传感器,以及使用tcpdump等嗅探工具采集流量的传感器. 网络流量所面临的挑战是你在所有日志数据中都会遇到的:真正的安全事件很少,而数据在时间和存储空间上都有代价.只要可能,首选日志数据,因为它清晰(日志数据记录了高级事件)而紧凑.网络流量中的相同事件必需从几百万个数据包中提取,这些数据包往往是冗余.加密或者难以理解的.与此同时,

《数据驱动的网络分析》——6.3 使用R工作区

6.3 使用R工作区 R为用户提供了一个持久化的工作区,也就是说,当用户退出R会话,他们可以选择保存数据和变量供未来使用.这一操作基本上是透明完成的,如下面的命令行示例: > s<-1:15 > s [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > t<-(s*3) - 5 > t [1] –2 1 4 7 10 13 16 19 22 25 28 31 34 37 40 > Save workspace image? [y/n/

《数据驱动的网络分析》——2.2 封包数据

2.2 封包数据 在本书的语境中,封包数据实际上意味着libpcap的输出,这种输出可能是通过IDS或者tcpdump完成.libpcap最初由LBNL的网络研究组开发,是基本的网络捕捉工具,可以作为snort.bro和tcpdump等工具的采集器. 在封包捕捉数据中寻找有价值的信息如同大海捞针.这类数据的捕捉需要平衡海量的可捕捉数据和真正有意义的少数数据之间的关系. 2.2.1 封包和帧格式在几乎所有现代化系统上,tcpdump将在以太网上捕捉IP,这意味着libpcap捕捉的数据实际上是包含

《数据驱动的网络分析》——6.4 数据帧

6.4 数据帧 数据帧(Data Frame)是R的一种独特结构,从分析人员的角度说,它也是最重要的结构.数据帧是一个临时数据表,在这种表格结构中,每列代表一个变量.在其他语言中,数据帧通过使用数组或者散列表部分实现,但是R将数据帧作为一种基本结构,从一开始就提供了更为复杂的数据帧选择.过滤和操纵机制. 我们从创建一个简单的数据帧开始(如例6-1所示).构造数据帧的最简单方法是在一组相同大小的矢量上使用data.frame操作. 例6-1 创建一个数据帧 > names<-c('Manny',