之前收到了一個研究nostalgia的學(xué)術(shù)大牛的主頁,粗略數(shù)了數(shù),大概1年發(fā)了30來篇的文章。這讓我就很好奇,這種學(xué)術(shù)大牛是怎么養(yǎng)成的。
主頁:southampton.ac.uk/psychology/about/staff/cs2.page#publications

因此,根據(jù)這頁的文本內(nèi)容,想獲得這個學(xué)術(shù)大牛的發(fā)表情況,以及和其他學(xué)者之間的合作情況。當(dāng)然,主要就是想學(xué)習(xí)一下關(guān)系網(wǎng)絡(luò)圖的繪制。
根據(jù)哪個工作順手用哪個的原則,整個工作使用了Stata,Python和Excel。
1. 過程
主要過程包括:
- 準(zhǔn)備數(shù)據(jù)源:將主頁發(fā)表情況復(fù)制到txt;
- 提取字段:使用Python利用正則表達(dá)式,提取作者,年份,標(biāo)題,發(fā)表期刊等數(shù)據(jù);
- 數(shù)據(jù)清洗:再用Stata和Excel清洗數(shù)據(jù);
- 數(shù)據(jù)整理:使用Python和Stata整理數(shù)據(jù),主要是作者之間的合作情況及次數(shù);
- 分析結(jié)果:使用Python和Stata得出結(jié)果導(dǎo)出Excel,并用Python制作關(guān)系網(wǎng)絡(luò)圖。
整個過程中比較花費(fèi)時間的就是數(shù)據(jù)清洗過程,主要是作者名字清洗,很多同一個人但是不同縮寫情況,有的名字還寫錯了。。。orz
再來就是,根據(jù)每篇文獻(xiàn)的作者們整理出大牛和其他學(xué)者的合作情況,以及這些發(fā)表物中所有作者之間的合作關(guān)系數(shù)據(jù)。
清洗過程略微繁雜瑣碎,就不細(xì)講了,直接把結(jié)果展示下吧。
2. 結(jié)果
a. 所有發(fā)表
單就發(fā)表期刊文章(Journal)來說,最多一年發(fā)表了33篇(含一作和非一作)。而且,至今還有32篇已經(jīng)接受或待發(fā)表,這在社科領(lǐng)域真是不少了。。。

而在所有發(fā)表的期刊文章中,JPSP(社會心理學(xué)領(lǐng)域頂刊)發(fā)表數(shù)量最多。

b. 一作發(fā)表
單拎出大牛作為第一作者的發(fā)表情況來看,每年也算是高產(chǎn)啊。。。

就發(fā)表期刊來看,作為一作,發(fā)表最多的依然是JPSP。。。

c. 非一作發(fā)表
再來看看非一作發(fā)表情況,2018年光是和其他學(xué)者合作就發(fā)表了30篇文章。。。大牛都不是單打獨(dú)斗的。

意料之中的,非一作發(fā)表最多的依然是JPSP~

d. 合作者情況
首先,整理出了和每個作者合作次數(shù)情況,這里列出合作次數(shù)大于等于10次的吧,基本是都是nostalgia領(lǐng)域的大牛了。

e. 關(guān)系網(wǎng)絡(luò)圖
最后,為了做出關(guān)系網(wǎng)絡(luò)圖,整理出兩兩作者之間的合作次數(shù),部分?jǐn)?shù)據(jù)結(jié)果如下圖所示。

然后,使用python的networkx包制作關(guān)系網(wǎng)絡(luò)圖(沒有方向,但有權(quán)重),代碼如下:
其中,author1,author2和cooperation_num分別是a,b,weight
import matplotlib.pyplot as plt
import networkx as nx
import os
import pandas as pd
path = os.getcwd()
link = 'Authors_linkdata.xlsx'
link_df = pd.read_excel(path+'/'+link)
link_df.columns = ['a','b', 'weight']
G = nx.Graph()
for i in range(len(link_df)):
G.add_edge(link_df['a'][i],link_df['b'][i],weight = link_df['weight'][i]
)
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_size=30)
nx.draw_networkx_labels(G, pos, font_size=7)
nx.draw_networkx_edges(G, pos, width=1, edge_color='r',alpha = 0.5)
plt.axis('off')
plt.show()
得出來的圖就是醬紫的啦~以這位學(xué)術(shù)大牛為中心,可以說,距離越近,和這位大牛的合作次數(shù)越多。
而且,除了圍繞這個學(xué)術(shù)大牛有個關(guān)系網(wǎng)外,左下角和右上角分別也有兩個學(xué)術(shù)“小團(tuán)體”喲。

本來還用pyecharts的graph做了關(guān)系網(wǎng)絡(luò)圖,但是,那個太難看了,而且在不斷地運(yùn)動,就不呈現(xiàn)了,感興趣的可以自行百度學(xué)習(xí)啦~