我们围绕网络可视化分析技术进行一些咨询,帮助客户解决独特的业务问题。
为了分析电视台时间关系形态变化,我们获取了电视台合播电视剧数量数据:
1、黄色的方格内,数字大小表示为节点面积,即该电视台独播电视剧数量
×
假如我们有一组网络测量数据,他们被编码在一个网络图G上。现在我们希望用可视化的技术来展示G。图形可视化的核心是如何通过几何表示。当然如果一个图是画在二维空间,我们理解得更加方便,但事实上,更常见的状况会是高维空间或者是一些更抽象的空间。
原则上,一个人可以简单地以随机的方式在给定的区域里放置顶点,然后在这些顶点之间画线。但不幸的是,尽管这样很简单,但看上去会非常混乱。所以为了改进自动绘图,各种规格和要求被正式作为绘制规则、美学和约束的标志。
从实用的角度看,绘制绘制规则、美学和约束有效的定义了自动绘制方法的参数。除此之外,开发一种计算效率的算法是非常重要的,这种算法寻求一种近似解,通常是通过启发式在符合美学的要求下进行优先排序。
2、白色的方格内,数字大小表示为连接强弱,可以为具体若干条连线、或连线的透明度、或连线的粗细,即这两个电视台合播电视剧数量
3、整体呈现稍微清楚一些,可以看到两年同样电视台的关系形态变化,输出一些网络分析的指标
2020年数据
读取文件
library(igraph);
network= as.matrix(data)[,-1]
network=apply(network,1,as.numeric)
给点的名称赋值
enames=colnames(data)[-1]
events =network
将对角线的元素赋值为0
diag(events)=0
生成网络图格式
for(i in 1:n) {
for(j in i:n) {
s = paste(c(as.character(i), as.character(j),
as.character(monopartite[i,j]), "\r"), collapse=" ")
write(s, file=f, append=TRUE, sep="")
}
}
读取网络图格式文件
e=read.graph("events.net",
对边进行删减,减去连接很小的边
if(is.null(E(graph)$weight)) stop("No weights for censoring the edges!")
es = E(graph)[E(graph)$weight<floor | E(graph)$weight>ceiling]
newgraph = graph - es
newgraph = newgraph
给每个边的宽度进行赋值,用粗细表示
plot(newe, vertex.size=diag(network), vertex.shape="square", vert
随时关注您喜欢的主题
对图进行删减,删去连接少的边
newe = censor.edgeweight(e, floor=2); newe
## IGRAPH UNW- 25 91 --
给每个边的宽度进行赋值,用粗细表示
E(newe)$width = E(newe)$weight
2021年数据
head(data)
## X1 湖南卫视 浙江卫视 江苏卫视 北京卫视 上海东方卫视 山东卫视
## 1 湖南卫视 24 1 0 0 0 0
## 2 浙江卫视 1 5 3 1 3 1
## 3 江苏卫视 0 3 7 1 2 1
## 4 北京卫视 0 1 1 4 5 1
## 5 上海东方卫视 0 3 2 5 5 3
## 6 山东卫视 0 1 1 1 3 3
## 安徽卫视 天津卫视 江西卫视 湖北卫视 深圳卫视 云南卫视 黑龙江卫视
## 1 0 0 0 0 0 0 0
## 2 2 1 0 0 2 0 0
## 3 1 2 0 1 0 0 0
## 4 1 0 0 0 1 0 0
## 5 3 3 0 0 0 1 0
## 6 2 3 3 2 0 2 2
## 广东卫视 重庆卫视 贵州卫视 四川卫视 辽宁卫视 河北卫视 河南卫视 东南卫视
## 1 0 0 0 0 0 0 0 1
## 2 0 0 2 0 0 0 0 0
## 3 0 1 0 0 0 1 0 0
## 4 1 0 0 1 0 1 1 0
## 5 0 1 0 0 0 0 0 0
## 6 0 0 1 0 3 1 1 0
## 吉林卫视 广西卫视 央视一套 央视八套
## 1 0 0 0 0
## 2 0 0 0 0
## 3 0 0 1 0
## 4 0 0 0 0
## 5 0 0 0 0
## 6 0 0 0 0
给点的名称赋值
enames=colnames(data)[-1]
将对角线的元素赋值为0
diag(events)=0
生成网络图格式
s = paste(c("*vertices ", as.character(n), "\r\n*edges\r"), collapse="")
write(s, file=f, sep="")
for(i in 1:n) {
for(j in i:n) {
s = paste(c(as.character(i), as.character(j),
读取网络图格式文件
e=read.graph("events.net", format="pajek")
对边进行删减,减去连接很小的边
if(is.null(E(graph)$weight)) stop("No weights for censoring the edges!")
es = E(graph)[E(graph)$weight<floor | E(graph)$weight>ceiling]
给每个边的宽度进行赋值,用粗细表示
plot(newe, vertex.size=diag(network), vertex.shape="square",
对图进行删减,删去连接少的边
newe = censor.edgeweight(e, floor=2); newe
## IGRAPH UNW- 25 27 --
## + attr: name (v/c), weight (e/n)
给每个边的宽度进行赋值,用粗细表示
E(newe)$width = E(newe)$weight
vertex.label.degree=pi/2, layout=layout.circle)
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!