专业表达是 网络拓扑图!
简单的也就是网络等级图
推荐比较常用的几个工具,
一个是 python 的 NetworkX 库
另一个是 Gephi 这个软件。
NetworkX
这是一款Python的软件包,用于创造、操作复杂网络,以及学习复杂网络的结构、动力学及其功能。
有了NetworkX你就可以用标准或者不标准的数据格式加载或者存储网络,它可以产生许多种类的随机网络或经典网络,也可以分析网络结构,建立网络模型,设计新的网络算法,绘制网络等等。可以查看官方文档
。
望采纳,谢谢~
⑶ 怎么制作社会网络图谱急用...
你指是具体是什么? 社会网络图谱它是以现实社会中的人际关系投射为基础,向外扩展、蔓延...。 还有就是它发展的各个阶段。
⑷ 怎么解释社会网络的概念
社会网络(socialnetwork)是一种基于“网络”(节点之间的相互连接)而非“群体”(明确的边界和秩序)的社会组织形式,也是西方社会学从1960年代兴起的一种分析视角。随着工业化、城市化的进行和新的通讯技术的兴起,社会呈现越来越网络化的趋势,发生“社会网络革命”(socialnetworkrevolution),与移动革命(mobilerevolution)、互联网革命(internetrevolution)并列为新时期影响人类社会的三大革命. 社会网络是指社会个体成员之间因为互动而形成的相对稳定的关系体系,社会网络关注的是人们之间的互动和联系, 社会互动会影响人们的社会行为。社会网络是由许多 节点构成的一种社会结构,节点通常是指个人或组织,社会网络代表各种 社会关系,经由这些社会关系,把从偶然相识的泛泛之交到紧密结合的家庭关系的各种人们或组织串连起来。社会关系包括朋友关系、同学关系、生意伙伴关系、种族信仰关系等。社会网络作为一种社会学视角发端于德国社会学家齐美尔(Georg Simmel, 1858-1918),并在 1960 年代随着冷战的开始和西方普遍出现的社会动乱开始在西方广为发展。社会网络分析不把人看作是由个体规范或者独立群体的共同活动所驱动,相反它关注人们的联系如何影响他们行动中的可能性和限制。一个多世纪以来,社会科学家都在使用“社会网络”这一隐喻表示不同尺度上的各种复杂社会关系。
⑸ 社会网络基本内容
社会网络分析
1.领会:社会网络的重要性及应用。
2.熟知:社会网络表示方式,网络密度,网络节点进出程度,扩散分析,群组分析,
社会相似性,分割群组,群组与群组成员描述(社群领袖分析)。
3.应用:能够运用社会网络分析进行扩散分析/群组分析模型建置、选择模型及算法参
数调整。
相比传统的圈内或是局部的社交,社会网络分析更多是从社交网站的个人用户出发,探讨其更多的可能关系人,从而构建各种弱关系组成的虚拟社交网络。我们平时更多是亲友邻里,同学同事等局部社交。
但是如果是基于互联网的社交,就会更多倾向于社会上弱关系,而这也是巨大的虚拟的存在。
社交软件等,如微信,Facebook,qq等是以个人用户开始延伸;
基于内容的网站平台,如视频类、直播软件、短视频,B站等; 图文综合类,博客,资料分享,bbs等,当然还有各位细化的特定网站和app,如陌陌、世纪佳缘等各种社交app。还有更多的是我们可能忽略但是如今也越来越多开始社交化的平台,比如音乐、游戏等等各种传统开始也增加了社交、直播等各种功能。当然所有的趋势就是越来越重视用户的社交需求。也可以从侧门反应出流量的缘由,社交也是一个很大的连接传播渠道,正如微商进入4.0,从而带来了微信群、社交电商、直播电商等等新形式。
有人说未来生意将越来越难做,其实说的是未来产品到处都是,关键你是如何得到信息,而人们需要的是更高层次的体验,更优惠的价格。如我们通过共同学习、共同游戏、直播互动等带来精神上的价值。这也是我们有了越来也越多的社群的原因。这里的社群不只是我们的微信群,更重要的是有共同频率、需求、爱好、利用组成的虚拟社群。而如果通过数据挖掘找出更多潜在的社会网络,那么就可以建立自己的社群,甚至挖掘出新产品等,达到更快直达用户的效果。
所以社会网络的研究也越来越重要和具有实用价值。社会网络分析就是利用数据分析和图分析等技术对我们的虚拟社交网络进行分析。
为了形式化抽象的表示我们的社会网络,我们也需要将各种网络抽象出来,我们可以以点、线、图来分析。
社会网络 是个由点和边构成的网络,节点就是一个个社会行动者,节点之间的连线也是边就是行动者之间的关系。
形式化定义
一个社会网络是由多个点 node(社会独立行动者actor)和各点之间的连线 tie(行动者之间的关系)组成的集合 network。
独立行动者具有独立性和主观能动性,而且从技术定义上不限于个人,还包括团体、组织、国家等。
关系就非常多了,可以是人际关系,组织关系和国家关系。
社会网络分析看起来挺简单,但是计算复杂度和理论研究都比较难,需要大数据支持,知识图谱的应用研究和推理计算等工程实现,所以直到现在大数据时代才逐渐体现出来,也成为热点。
传统数学方法如回归或是隐马尔科夫模型比较难解决潜在相依关系的问题,所以社会网络分析的方法更需要借助图的技术,而且这个是很多值得开发的应用。比如内容检索、金融反欺诈、情报分析、刑侦推理、反恐和法律辩护等方面都有很大应用前景。
社交媒体与社会网络
首先我们看到脸书和推特带来的变革,社交媒体与传统媒体最大的区别之一是可以有社交属性,有发言的渠道,你看电视的时候,即使可以打上弹幕但是互相交流和发布信息还是受到局限,当然这也是安全考虑,不能让捣乱分子发负面信息等。 社交媒体的价值和功能其实已经基本嵌入了很多互联网产品了,这时或我们之间的各种弱链接就越来越方便,更重要的是多样化,关系多变。
网络密度从图的定义过来的,可以看出我们不是看图有多大,而是连线多不,在同样的人数下,社交媒体一个直播的发言率非常高,这才是密度的来源。
那么同样的一个群体,他们之间的关系可能就是各种社交媒体上的综合。也许在另一个同样的群体内估计也没什么连线。联系的强弱也有影响。
所以网络密度理论的定义是行动者之间实际的联结的个数与可能的最大联结数目的比值。比值越高网络密度越高。
数字化表示节点与节点的联结程度,节点度(表示一个行为人参与网络行为的程度)是行为人i(即节点)的所有关系数量,度指线的条数。
进出度是关系是有方向的时候,比如a是b的老师,同时b也是a的老师,a参考了b ,b参考了c,就有了方向性,这时候就借用有向图的定义,入度为进入节点的连线条数,出度为节点出去的连线条数。
与之区分的是联结强度,强联结、弱联结
所谓联结强度是通过“在某一联结山所花的时间,情感投入程度,亲密程度(相互信任)以及互惠性服务等的综合”来定义的,可以变化。
根据弱联结假设,强度弱的联结比强度强的联结更可能带来多样化的信息。
这里也可以看联结的多重性,比如如果A和B可能是朋友,也是同事,甚至是情侣,这意味着多重的联结关系,联结强度就跟高,不过多重性也代表了两个行动者在多方面的社会活动中被捆绑在了一起,比如A和B同事,也是情侣,但是如果分手或是感情纠纷之类,就会影响到之间的朋友同事的关系,如果分手的也找了同事,那就更为麻烦了。
也就是俗话说要交叉或跨界要走出去,才能更多样化。闭塞在自己的圈子里是很难创新的。
指网络中所有行动者之间的全部联结所构成的集合(与之对应的是自我中心网络)。 类似大的主题群体、兴趣学习团队等。
环绕在自我周围的社会网络,它既包括自我与他人的直接联结,也包括这些与我联结的他人之间的联结。比如主播的中心网络就包括他与观众的联结,还有粉丝之间的联结网络,也可能他们也是主播互相观看捧场。
指满足下列两个条件之一的群体:(a)所有行动者均与本群体所有其他行动者有直接联结关系:(b)不存在本群体所有成员均与之有连接的群体外行动者。小集团是一个群体中的子群体,其成员彼此间的平均喜爱程度超过对其子群外的其它成员的平均喜欢程度。比如直播平台里某个游戏直播子群,如果你都有连接那你也算是一个群粉丝了。
另一方面在系统里也可以加入推荐,比如可能根据你和某个声音群里的多个主播有关注,那么会推荐其他群内主播或推荐兴趣群。
这就可以涉及到扩散分析了
一个两维空间中以点代表行动者,以线代表行动者之间关系的一只种图形,也叫社群图。
构成社会网络有三个基本要素,下列何者不包括在内?
A. 行动者(actors)
B. 关系(relationship)
C. 连带(linkages)
D. 资源(Resources)
以下哪一个是社群领袖会有的特性?
A. Silhouette Coefficient大
B. In-Degree多
C. Network Density高
D. Out-Degree多
http://e.cda.cn/course/2472
⑹ 社会关系网络网怎么绘制
最近需要绘制一些网络演示图,没找到合适的绘图工具,找了半天感觉学习成本都挺高的,感觉还是用Python搞效率高一些。之前用igraph的时候凑巧看过networkx,觉得和igraph-python相比,这个库至少是给人类用的,而且这个包好像是内置Graphviz的,不如我也用这个加matplotlib去绘图试试。
今天试着画一个二分网络无向图,并且用圈圈表现出其社团关系,颜色表示节点种类。
1. 创建网络
G = nx.Graph()
G.add_node('1')
G.add_nodes_from(['2', '3'])
#注意如果加进去临边有未出现的节点,会自动创建节点
G.add_edge(1, 2)
G.add_edge('1', '2')
#实际上edges是个hash的key,还可以对应一个value
G.add_edge(n1, n2, object=x)
G.add_edges_from([('1', '2'), ('1', '3')])
list(G.adj['1'])
G.degree['1']
G.remove_node('2')
G.remove_edge('1', '3')
2. 为节点添加属性
G[1][3]['color'] = "blue"
G.edges[1, 2]['color'] = "red"
3. 快速遍历所有临边
FG = nx.Graph()
FG.add_weighted_edges_from([(1, 2, 0.125), (1, 3, 0.75), (2, 4, 1.2), (3, 4, 0.375)])
for n, nbrs in FG.adj.items():
for nbr, eattr in nbrs.items():
wt = eattr['weight']
if wt < 0.5: print('(%d, %d, %.3f)' % (n, nbr, wt))
4. 为图,节点,边添加属性
G = nx.Graph(day="Friday")
G.graph
5. 为节点添加属性
G.add_node(1, time='5pm')
G.add_nodes_from([3], time='2pm')
G.nodes[1]
G.nodes[1]['room'] = 714
G.nodes.data()
6. 为临边添加属性
G.add_edge(1, 2, weight=4.7 )
G.add_edges_from([(3, 4), (4, 5)], color='red')
G.add_edges_from([(1, 2, {'color': 'blue'}), (2, 3, {'weight': 8})])
G[1][2]['weight'] = 4.7
G.edges[3, 4]['weight'] = 4.2
#注意的是weight这个属性不能胡乱用,这个是算法库里面处理时看做临边权重的属性,必须是数值型的。
7. 创建有向图
DG = nx.DiGraph()
DG.add_weighted_edges_from([(1, 2, 0.5), (3, 1, 0.75)])
#这个方向是按照第一个元素->第二个元素的
DG.out_degree(1, weight='weight') #0.5
DG.degree(1, weight='weight') #1.25
H = nx.Graph(DG)#有向图转为无向图
8. 创建multigraph
>>> MG = nx.MultiGraph()
>>> MG.add_weighted_edges_from([(1, 2, 0.5), (1, 2, 0.75), (2, 3, 0.5)])
>>> dict(MG.degree(weight='weight'))
{1: 1.25, 2: 1.75, 3: 0.5}
>>> GG = nx.Graph()
>>> for n, nbrs in MG.adjacency():
... for nbr, edict in nbrs.items():
... minvalue = min([d['weight'] for d in edict.values()])
... GG.add_edge(n, nbr, weight = minvalue)
...
>>> nx.shortest_path(GG, 1, 3)
[1, 2, 3]
9. 基础做图
G = nx.petersen_graph()
plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
plt.subplot(122)
#这个draw_shell好像是按照某种叫shell的布局绘制
nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight='bold')
#传入选项
options = {undefined
'node_color': 'black',
'node_size': 100,
'width': 3,
}
# 四种布局
plt.subplot(221)
nx.draw_random(G, **options)
plt.subplot(222)
nx.draw_circular(G, **options)
plt.subplot(223)
nx.draw_spectral(G, **options)
plt.subplot(224)
nx.draw_shell(G, nlist=[range(5,10), range(5)], **options)
1. 实战
1.1 画一个二分网络图,两类节点不同颜色,每个节点上有id,临边的颜色代表值,然后画两个区域。
B = nx.Graph()
B.add_nodes_from(['u1','u2','u3','u4'], bipartite='user')
B.add_nodes_from(['i1','i2','i3'], bipartite='item')
B.add_edge('u1','i1',weight=3)
B.add_edge('u1','i2',weight=4)
B.add_edge('u2','i1',weight=5)
B.add_edge('u2','i3',weight=1)
B.add_edge('u3','i3',weight=3)
B.add_edge('u4','i3',weight=4)
from networkx.algorithms import bipartite
import matplotlib as mpl
#区域就算了 搞了一下午还是没捣鼓出来怎么画
X = ['u1','u2','u3','u4']
Y = ['i1','i2','i3']
Edges = []
pos = dict()
pos.update( (n, (1, i)) for i, n in enumerate(X) )
pos.update( (n, (2, i+0.5)) for i, n in enumerate(Y) )
nx.draw_networkx_nodes(B, pos, nodelist=X, node_color='slategray',alpha=0.95, node_size = 350, with_labels=False)
nx.draw_networkx_nodes(B, pos, nodelist=Y, node_color='steelblue',alpha=0.95, node_size = 350, with_labels=False)
nx.draw_networkx_labels(B,pos)
colors = [ B.edges[u,i]['weight'] for u,i in B.edges]
edges = nx.draw_networkx_edges(B, pos = pos, edge_color = colors,
width=3, edge_cmap=plt.cm.Blues, with_labels=False, edge_vmin = 0, alpha=0.9)
pc = mpl.collections.PatchCollection(Edges, cmap=plt.cm.Blues)
pc.set_array(colors)
plt.colorbar(pc)
ax = plt.gca()
ax.set_axis_off()