專業表達是 網路拓撲圖!
簡單的也就是網路等級圖
推薦比較常用的幾個工具,
一個是 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()