d3network包

code{white-space: pre;}

pre:not([class]) {
background-color: white;
}

.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.04);
}
img {
max-width:100%;
height: auto;
}
h1 {
font-size: 34px;
}
h1.title {
font-size: 38px;
}
h2 {
font-size: 30px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 18px;
}
h5 {
font-size: 16px;
}
h6 {
font-size: 12px;
}
.tabbed-pane {
padding-top: 12px;
}
button.code-folding-btn:focus {
outline: none;
}

d3network包

ShangFR

2016年5月6日

R d3network包

通过Christopher Gandrud编写的d3network包可以轻松创建基于Htmlwidgets框架的网络图。它目前支持三种类型的网络图:

  • 力导向图,可以显示复杂的网络划分关系;
  • 桑基图(Sankeydiagram),利于展现分类维度间的相关性,以流的形式呈现共享同一类别的元素数量。特别适合表达集群的发展,比如展示特定群体的人数分布等;
  • Reingold-Tilford树型图,可以把一个树形结构的数据,用不重叠、紧凑、分层的形式展示出来。

下面通过例子展示这三种类型的网络图。

力导向图

首先载入networkD3包,然后创建src源、target目标两个向量,整合成数据框networkData,最后就可以通过simpleNetwork函数画出一个简单的力导向图(见例1);此外,也可以通过自有数据框MisLinks、MisNodes创建复杂一点的力导向图(见例2)。

#例1
# 载入软件包
library(networkD3)

创建数据

src <- c("A", "A", "A", "A",

"B", "B", "C", "C", "D")

target <- c("B", "C", "D", "J",

"E", "F", "G", "H", "I")

networkData <- data.frame(src, target, zoom = TRUE)

画图

simpleNetwork(networkData)

#例2
# 直接载入数据包(数据框)
data(MisLinks)
data(MisNodes)

画图

forceNetwork(Links = MisLinks, Nodes = MisNodes,

Source = "source", Target = "target",

Value = "value", NodeID = "name",

Group = "group", opacity = 0.8, zoom = TRUE)

桑基图(Sankeydiagram)

桑基图(Sankeydiagram),利于展现分类维度间的相关性,以流的形式呈现共享同一类别的元素数量。特别适合表达集群的发展,比如展示特定群体的人数分布等;可以直接使用网上下载的JSON数据创建桑基图,例子如下:

Reingold-Tilford树型图

RT树型图可以把一个树形结构的数据,用不重叠、紧凑、分层的形式展示出来。

URL <- paste0(
"https://cdn.rawgit.com/christophergandrud/networkD3/",
"master/JSONdata//flare.json")

格式转化

Flare <- jsonlite::fromJSON(URL, simplifyDataFrame = FALSE)

使用部分数据1-3

Flare\(children = Flare\)children[1:3]

环形的RT树,如下图:

radialNetwork(List = Flare, fontSize = 10, opacity = 0.9)

#直接生成一棵从左到右的树,如下图:
diagonalNetwork(List = Flare, fontSize = 10, opacity = 0.9)

详细资料,参见http://christophergandrud.github.io/networkD3/

反馈与建议

使用R的networkD3包画可交互的网络图的更多相关文章

  1. R语言diagram包画订单状态流图

    代码如下: library("diagram") #a <- read.table(file="clipboard",header=TRUE) write ...

  2. 利用R语言制作出漂亮的交互数据可视化

    利用R语言制作出漂亮的交互数据可视化 利用R语言也可以制作出漂亮的交互数据可视化,下面和大家分享一些常用的交互可视化的R包. rCharts包 说起R语言的交互包,第一个想到的应该就是rCharts包 ...

  3. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  4. 每R一点:各种画地图,全是知识点,90%人不知道!(转)

    R语言绘制地图,在数据分析中经常能够用到,并且会达到非常好的展示效果,本节以例子形式,介绍如何使用R语言工具,画出理想的地图. 本节例子在 R version 2.15.3版本下运行顺畅,其他版本待定 ...

  5. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  6. R语言-Knitr包的详细使用说明

    R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

  7. R语言dplyr包初探

    昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...

  8. R+NLP︱text2vec包——四类文本挖掘相似性指标 RWMD、cosine、Jaccard 、Euclidean (三,相似距离)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 在之前的开篇提到了text2vec ...

  9. R语言扩展包dplyr——数据清洗和整理

    R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

随机推荐

  1. android 开发 - 对图片进行虚化(毛玻璃效果,模糊)

    概述 IPAD,IPHONE上首页背景的模糊效果是不是很好看,那么在 Android中如何实现呢.我通过一种方式实现了这样的效果. 开源库名称:anroid-image-blur 一个android ...

  2. Linux设备驱动剖析之Input(四)

    static void input_pass_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) ...

  3. Unity 之 人物换装

    http://www.cnblogs.com/mcwind/archive/2011/02/18/1957453.html  原理 一. SkinedMeshRender:该对象负责网格绘制.主要数据 ...

  4. C#壓縮文件幫助類 使用ICSharpCode.SharpZipLib.dll

    using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Zip; using System; using Syst ...

  5. Android开发之ProgressDialog在独立Thread线程中更新进度

    简单的需求:在一个工作Thread中更新进度对话框ProgressDialog 遇到的问题: 1,创建需要Context,这个需要传进来 2,Thread中不能创建ProgressDialog,否则需 ...

  6. 开发常用到的terminal命令

    1.删除work_plugin目录下的.svn文件(最后面的;也是命令的一部分) sudo find /Users/maxinliang/DaTang/work_plugin ".svn&q ...

  7. Codeforces Round #197 (Div. 2) (A、B、C、D、E五题合集)

    A. Helpful Maths 题目大意 给一个连加计算式,只包含数字 1.2.3,要求重新排序,使得连加的数字从小到大 做法分析 把所有的数字记录下来,从小到大排序输出即可 参考代码 #inclu ...

  8. windows8 平板的使用心得

    一.问题的提出 买了本windows8 平板,全触摸,不带键盘鼠标,第一次用.系统与之前版本有差别,不适应. 二.问题的分析 总是有地方改善. 三.问题的解决 1.我的电脑,要在桌面上显示. 点桌面, ...

  9. jquery---基本标签

    你觉得 jquery 有哪些好处? jQuery 是轻量级的 javascript 框架 强大的选择器 出色的 DOM 操作的封装 可靠的事件处理机制 完善的 ajax 封装 出色的浏览器的兼容性 支 ...

  10. Android UI开发第四十二篇——实现实现易信的圆形图像和对话列表的图像显示部分

    显示图像时,很多个性化显示,圆形或圆角.气泡等等,我们这一篇文章探讨一下圆形和气泡的显示,仿照易信中的实现,先看下效果图: 代码: public class RoundImageView extend ...