《数据驱动的网络分析》——6.5 可视化
本节书摘来自异步社区《数据驱动的网络分析》一书中的第6章,第6.5节,作者: 【美】Michael Collins 更多章节内容可以访问云栖社区“异步社区”公众号查看。
6.5 可视化R提供了现成的、极其强大的可视化能力,许多标准可视化可以用高级命令完成。在下面的例子中,我们将用一个正态分布样本制作直方图,并将结果显示在屏幕上。
第10章讨论各种可视化技术。在本节中,我们的重点是R可视化的各种功能,包括图像控制、保存和操纵。
6.5.1 可视化命令
R有许多高级可视化命令,可以绘制时间序列、直方图和柱状图。套件中的骨干命令是plot,它可以用于提供来源于散点图的多种图形:简单散点图、阶梯图和序列图。 表6-1列出了主要的图形名称,help命令对这些图形提供了说明。
![b1961071faaca617fd6f78a1cda6819d460bd25b](https://yqfile.alicdn.com/b1961071faaca617fd6f78a1cda6819d460bd25b.png)
6.5.2 可视化参数
控制可视化参数有两种主要机制。首先,几乎所有可视化命令都提供一组标准的选项参数。表6-2列出了主要的选项,可视化结果对比如图6-2所示。
![38835db747a83f53db054f90cfd0bc6427abe10d](https://yqfile.alicdn.com/38835db747a83f53db054f90cfd0bc6427abe10d.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](https://yqfile.alicdn.com/ca26cf8ffc6cea906e0f9fe01dafe696a298e90a.png)
线类型
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()
大数据可视化分析,我们通常是怎么快速实现它的 大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为可视化分析能够直观的呈现大数据特点,同时能够非常容易被读者所接受,就如同看图说话一样简单明了。 高质量的可视化工具对于数据分析至关重要。数据可视化工具是一种应用软件,帮助用户以可视化、图形化的格式显示数据,呈现数据的完整轮廓。像饼状图、曲线图、热图、直方图、雷达/蜘蛛图只是可视化中的一小部分,这些方法可以简单地表示数据并展示特点和趋势。 当今这个高速运转的时代,越来越重视信息的及时性和准确性,才能在商业竞争中取得胜利,越来越多的企业开始意识到数据的重要性,通过数据科学的做出明智决策,
《信息可视化:交互设计(原书第2版)》——1.4节信息可视化的价值 本节书摘来自华章社区《信息可视化:交互设计(原书第2版)》一书中的第1章,第1.4节信息可视化的价值,作者:(英) Robert Spence,更多章节内容可以访问云栖社区“华章社区”公众号查看
《数据驱动安全:数据安全分析、可视化和仪表盘》一2.2.1 理解Python数据分析和可视化生态系统 本节书摘来华章计算机《数据驱动安全:数据安全分析、可视化和仪表盘》一书中的第2章 ,第2.2.1节,[美]杰·雅克布(Jay Jacobs)鲍布·鲁迪斯(Bob Rudis) 著 薛杰 王占一 张卓 胡开勇 蒋梦飏 赵爽 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
《数据驱动安全:数据安全分析、可视化和仪表盘》一1.1 数据分析简史 本节书摘来华章计算机《数据驱动安全:数据安全分析、可视化和仪表盘》一书中的第1章 ,第1.1节,[美]杰·雅克布(Jay Jacobs)鲍布·鲁迪斯(Bob Rudis) 著 薛杰 王占一 张卓 胡开勇 蒋梦飏 赵爽 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 树莓派Pico + MicroPython驱动2.4寸SPI串口屏(ST7789)
- 领域驱动设计四论
- Linux Platform devices 平台设备驱动
- linux lcd设备驱动剖析三
- 大数据在企业中发挥的作用,以及如何驱动企业创新
- 大数据在企业中发挥的作用,以及如何驱动企业创新
- appium,参数化,数据驱动
- win10蓝屏问题,关于驱动kisSaasUrlRedirectKnl64.sys 的
- 你的企业离数据驱动业务还有多远
- 与“数”同行:大数据驱动大学变革
- 企业应如何培养数据驱动的分析文化?
- 提升N倍!如何用技术驱动企业提效?
- DDD领域驱动设计基本理论知识总结
- MFC Windows 程序设计[282]之文件系统过滤驱动(附源码)
- 基于V7的emWin多屏显示方案模板,同时驱动LCD和OLED例程
- Atitit 提升开发效率 通道化驱动化数据操作与查询 目录 1. xiaoguo1 1.1. Atitit mybatis 简化开发与提升开发效率法1 2. Code1 3. ref4
- paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
- 〖Python WEB 自动化测试实战篇⑬〗- 实战 - 数据驱动在自动化测试中的应用
- 滑动奇异频谱分析:数据驱动的非平稳信号分解工具(Matlab代码实现)
- Ubuntu 卸载 Nvidia 驱动和安装最新驱动
- 英伟达驱动怎么设置显示帧数?
- UART协议驱动设计
- Thinkpad Edge E440 Ubuntu14.04 无线网卡驱动 解决
- 构建数据驱动的文化价值体系,还得靠数据分析
- 一文8个步骤从0到1教你基于数据驱动的接口自动化框架封装
- 认识篇Linux驱动----CAN通信方式实验
- 【Linux驱动开发100问】如何编译Linux内核?
- Android App层通过JNI从驱动获取Input Event
- 编写设备驱动之i2c_client