導航:首頁 > 編程語言 > python做知識圖譜繪制

python做知識圖譜繪制

發布時間:2022-04-08 05:37:54

A. 用python對txt數據進行繪圖

B. Python如何畫cos和sin的圖啊

C. 怎麼用python繪圖

你可以使用numpy和matplotlab這兩個庫來實現的你功能。

你的圖可以參考:

http://matplotlib.org/examples/pylab_examples/histogram_percent_demo.html

importmatplotlib
fromnumpy.randomimportrandn
importmatplotlib.pyplotasplt
frommatplotlib.tickerimportFuncFormatter

defto_percent(y,position):
#Ignorethepassedinposition.
#ticklocations.
s=str(100*y)

#
ifmatplotlib.rcParams['text.usetex']==True:
returns+r'$\%$'
else:
returns+'%'

x=randn(5000)

#Makeanormedhistogram.It'llbemultipliedby100later.
plt.hist(x,bins=50,normed=True)

#_percent.Thismultipliesallthe
#defaultlabelsby100,makingthemallpercentages
formatter=FuncFormatter(to_percent)

#Settheformatter
plt.gca().yaxis.set_major_formatter(formatter)

plt.show()

最主要的就是x軸和y軸的處理,我按照對數算了一下你提供的數據,好像和這個圖效果不一樣。


如果解決了您的問題請採納!
如果未解決請繼續追問

D. python 繪制圖表matplotlib

一般的, 根據當前的月份獲取天數, 遍歷一下字典, 增加缺失的鍵值對即可.

E. 怎麼用Python繪制能量譜

numpy主要是用於數值計算,包括sin、cos、exp等,同時提供N維數據對象;pandas提供了數據結構和數據分析工具;scipy 則是基於numpy,提供了一個在python中做科學計算的工具集,也就是說它是更上一個層次的庫;我理解大概是這樣,歡迎指正!

F. Python如何實現知識圖譜

那就分享一張吧

G. 知識圖譜可以用python構建嗎

知識圖譜可以用python構建嗎?

答案當然是可以的!!!

那麼如何使用python構建

什麼是知識圖譜

從Google搜索,到聊天機器人、金融風控、物聯網場景、智能醫療、自適應教育、推薦系統,無一不跟知識圖譜相關。它在技術領域的熱度也在逐年上升。
互聯網的終極形態是萬物的互聯,而搜索的終極目標是對萬物的直接搜索。傳統搜索引擎依靠網頁之間的超鏈接實現網頁的搜索,而語義搜索是直接對事物進行搜索,如人物、機構、地點等。這些事物可能來自文本、圖片、視頻、音頻、IoT設備等各種信息資源。而知識圖譜和語義技術提供了關於這些事物的分類、屬性和關系的描述,使得搜索引擎可以直接對事物進行索引和搜索。
知識圖譜是由Google公司在2012年提出來的一個新的概念。從學術的角度,我們可以對知識圖譜給一個這樣的定義:「知識圖譜本質上是語義網路(Semantic Network)的知識庫」。但這有點抽象,所以換個角度,從實際應用的角度出發其實可以簡單地把知識圖譜理解成多關系圖(Multi-relational Graph)。
那什麼叫多關系圖呢? 學過數據結構的都應該知道什麼是圖(Graph)。圖是由節點(Vertex)和邊(Edge)來構成,但這些圖通常只包含一種類型的節點和邊。但相反,多關系圖一般包含多種類型的節點和多種類型的邊。
本項目利用pandas將excel中數據抽取,以三元組形式載入到neo4j資料庫中構建相關知識圖譜。

運行環境

基於Neo4j能夠很容易構建知識圖譜,除了用neo4j自帶的cypher,也支持Python包py2neo創建節點和關系從而構建知識圖譜。本項目是基於發票信息,將發票數據中結構化數據抽象成三元組,分別創建節點和關系從而構建成知識圖譜。
具體包依賴可以參考文件requirements.txt

neo4j-driver==1.6.2numpy==1.15.3pandas==0.23.4parso==0.3.1pickleshare==0.7.5pluggy==0.8.0prompt-toolkit==1.0.15py==1.7.0py2neo==3Pygments==2.2.0pytest==3.9.3python-dateutil==2.7.5wcwidth==0.1.7wincertstore==0.2xlrd==1.1.0

將所需依賴安裝到pyton中:pip install -r requirements.txt

Pandas抽取excel數據

python中pandas非常適用於數據分析與處理,可以將excel文件轉換成dataframe格式,這種格式類似於Spark中的Dataframe結構,可以用類sql的形式對數據進行處理。
Excel數據結構如下

通過函數data_extraction和函數relation_extrantion分別抽取構建知識圖譜所需要的節點數據以及聯系數據,構建三元組。
數據提取主要採用pandas將excel數據轉換成dataframe類型
invoice_neo4j.py

建立知識圖譜所需節點和關系數據

DataToNeo4jClass.py

具體代碼請移步到GitHub上下載

詳細內容請到github下載,項目名neo4j-python-pandas-py2neo-v3

更多Python知識,請關註:Python自學網!!

H. 如何用python繪制各種圖形

1.環境

系統:windows10

python版本:python3.6.1

使用的庫:matplotlib,numpy

2.numpy庫產生隨機數幾種方法

import numpy as np
numpy.random

rand(d0,d1,...,dn)

In [2]: x=np.random.rand(2,5)

In [3]: x
Out[3]:
array([[ 0.84286554, 0.50007593, 0.66500549, 0.97387807, 0.03993009],
[ 0.46391661, 0.50717355, 0.21527461, 0.92692517, 0.2567891 ]])

randn(d0,d1,...,dn)查詢結果為標准正態分布

In [4]: x=np.random.randn(2,5)

In [5]: x
Out[5]:
array([[-0.77195196, 0.26651203, -0.35045793, -0.0210377 , 0.89749635],
[-0.20229338, 1.44852833, -0.10858996, -1.65034606, -0.39793635]])

randint(low,high,size)

生成low到high之間(半開區間 [low, high)),size個數據

In [6]: x=np.random.randint(1,8,4)

In [7]: x
Out[7]: array([4, 4, 2, 7])

random_integers(low,high,size)

生成low到high之間(閉區間 [low, high)),size個數據

In [10]: x=np.random.random_integers(2,10,5)

In [11]: x
Out[11]: array([7, 4, 5, 4, 2])

3.散點圖

x x軸
y y軸
s 圓點面積
c 顏色
marker 圓點形狀
alpha 圓點透明度#其他圖也類似這種配置
N=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)
x=np.random.randn(N)
y=np.random.randn(N)
plt.scatter(x,y,s=50,c='r',marker='o',alpha=0.5)
plt.show()

8.箱型圖

import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 點的形狀,whis虛線的長度plt.boxplot(data,sym="o",whis=1.5)plt.show()
#sym 點的形狀,whis虛線的長度

I. 如何用Python繪制Circos圖

用Python實現Circos圖的繪制在線繪制的Circos有一定局限性,如對數據的要求、個性化的局限和處理速度等的問題,但如果你是一個Pythoneer或者喜歡用更加Pythonic的方式來個性化地繪制Circos圖,那麼今天就跟隨我一起用代碼實現這一目標吧!

安裝Circos包

首先,登錄Python的包索引網站PythonPackageIndex(PyPI,正確讀音是:PiePeeAi),找到Circos包的下載頁:

https://pypi.python.org/pypi/Circos/1.3.5

該包/模塊的作者是我的好友EricMa。你可以選擇下載wheeler文件,然後本地安裝。也可以在shell下直接通過pip進行安裝:

pipinstallcircos

注意,所支持的Python版本必須是3.x,對2不支持。

選擇數據

當安裝了circos包後,我們就可以直接應用這個包來寫代碼了。為了演示方便,我需要應用一些數據。作為內科醫師,就讓我來展示一下老本行:處理葯物與肝酶細胞色素P450的相互關系的可視化。由於是為了拋磚引玉,所以繪制出的Circos圖相對簡單。

我們先從美國FDA官網下載不同細胞色素相關的各種口服葯物表。共202種常用的口服葯物,涵蓋內科學、腫瘤學、神經科和心理學等學科。數據文件如下:

可以看到這個數據的結構:是按肝細胞色素酶進行分類,共分8個列。這8個細胞色素酶分別是:CYP1A2,CYP2B6,CYP2C8,CYP2C9,CYP2C19,CYP2D6,CYP2E1和CYP3A4。我們將要建立各個口服葯與這些肝酶之間關系的Circos圖,從而了解通過相同肝酶代謝或轉化的葯物之間是否存在相互作用。

導入各個模塊和讀入數據

導入各個模塊:

fromcircosimportCircosPlot

importxlrd

importpandasaspd

importnumpyasnp

讀入文件:

filename='.\MedicationInteraction.xlsx'

book=xlrd.open_workbook(filename)

print('Fileloaded!')

提取數據:

nrows=book.sheet_by_name('Sheet1').nrows

header=book.sheet_by_name('Sheet1').row_values(0)

data=[book.sheet_by_name('Sheet1').row_values(i)foriinrange(1,nrows)]

df=pd.DataFrame(data,columns=header)

df[df=='']=np.nan

讀取後,葯物和酶的數據為pandas的DataFrame數據結構,細胞色素P450酶的名字為columns的名字。我們可以檢查一下數據:

修數據,尤其是處理NA數據

df_dict={}

foriinrange(len(df.columns)):

df_dict[df.icol(i).name]=list(df.icol(i).dropna())

節點和連線

創建節點(nodes)數據,在我這個例子里就是各個葯物和肝酶:

nodes=[]

forkeyindf_dict.keys():

nodes.extend(df_dict[key])

nodes=list(nodes)

headers=list(df.columns)

enzymes=['0']*5

forheaderinheaders:

enzymes.append(header)

enzymes.extend(['0']*5)

nodes.extend(enzymes)

創建連線(edges)數據,我們應用tuple(元組)這個數據結構來表示葯物與特定肝酶之間的關系:

edges_origin=[]

forkeyindf_dict.keys():

forvalueindf_dict[key]:

edges_origin.append((key,value))

繪圖

繪制Circos圖:

c=CircosPlot(nodes,edges_origin,radius=10,

nodecolor="blue",

edgecolor="red",

)

c.draw()

得到了下面這張所有葯物與肝酶之間的圖:

左上方是8個肝臟細胞色素P450酶(CYP1A2、CYP2B6、CYP2C8、CYP2C9、CYP2C19、CYP2D6、CYP2E1和CYP3A4)。其它點即為202種口服葯物。每種葯物都與參與代謝和轉化它的P450酶相連。與相同酶連接的不同葯物,理論上應該都存在相互作用,但具體如何還要看與酶的作用機理。

個性化繪圖

如果我們打算分別可視化出不同肝酶的關系圖形,我們只需改變連線信息,即edges信息:

edges=[]

‍forvalueindf_dict['CYP2B6']:

edges.append(('CYP2B6',value))

c=CircosPlot(nodes,edges,radius=10,

nodecolor="orange",

edgecolor="orange",

)

c.draw()

從而我們得到了各種肝酶所代謝和轉化葯物的圖形

用PS將它們合並:

相同肝酶所代謝和轉化的葯物用相同顏色的edges表示。

顯示特定葯物

最後,我們可以挑選其中一些感興趣的葯物來進行觀察,例如,我從這202個葯物中指定幾個我感興趣的葯物:

propafenone(心律平),acetaminophen(對乙醯氨基酚),paclitaxel(紫杉醇),ibuprofen(布洛芬),losartan(洛沙坦),omeprazole(奧美拉唑),carvediolo(卡維地洛),codeine(可待因),theophylline(茶鹼),quinidine(奎尼丁),verapamil(異搏定),lovastatin(洛伐他汀),nitrendipine(尼群地平)

然後重新建立edges:

medications=['propafenone','acetaminophen','paclitaxel','ibuprofen','losartan','omeprazole','carvedilol','codeine','theophylline','quinidine','verapamil','lovastatin','nitrendipine']

edges_candidate=set()

formedicationinmedications:

foredgeinedges_origin:

ifmedication==edge[1]:

edges_candidate.add(edge)

edges_candidate=list(edges_candidate)

然後再繪圖:

c=CircosPlot(nodes,edges_candidate,radius=10,

nodecolor="black",

edgecolor="black",

)

c.draw()

從而得到這張圖。

J. 如何用Python繪制學術報告圖表

當數據較多時,容易出現excel"翻白眼"的現象;
需要使用subplot功能或批量處理時,使用MATLAB或Python更為方便;
excel處理的圖在美觀程度上較論文圖表標准有一定的距離。

閱讀全文

與python做知識圖譜繪制相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:61
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1002
命令zpa 瀏覽:285
python編譯器小程序 瀏覽:944
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:591
安卓卸載組件應用怎麼安裝 瀏覽:912
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:432
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:399
夢幻端游長安地圖互通源碼 瀏覽:745
電腦本地文件如何上傳伺服器 瀏覽:312