它背後的想法並不是很困難,但爲了讓它顯示(至少在ubunto),它給了我一些困難,因爲並非所有的字體都支持表情符號。我會直接展示一些鏈接,最終幫助我(也許你不需要那些鏈接)。
從表情符號cheat sheet從emoji python package我拿起三個作爲示例顯示,這裏是代碼。
G = nx.Graph()
G.add_nodes_from([0,1,2])
n0 = emoji.emojize(':thumbsup:',use_aliases=True)
n1 = emoji.emojize(':sob:',use_aliases=True)
n2 = emoji.emojize(':joy:',use_aliases=True)
labels ={0:n0,1:n1,2:n2}
nx.draw_networkx(G,labels=labels, node_color = 'w', linewidths=0, with_labels=True, font_family = 'Symbola' ,font_size = 35)
plt.show()
![enter image description here](https://i.stack.imgur.com/BlvXA.png)
遇到的困難:
1 - 我的機器是在ubunto 14.04,我無法顯示他們總是表現爲矩形任何表情圖案
安裝需要的字體Symbola usin克以下命令(mentioned here):
sudo apt-get install ttf-ancient-fonts
2- Maplotlib(其networkx調用繪製)不使用安裝的字體。
從一些有益的討論123456我複製並粘貼使用symbolA的.TFF字體文件在默認matplotib目錄(它獲取的字體使用)。
cp /usr/share/fonts/truetype/ttf-ancient-scripts/Symbola605.ttf /usr/share/matplotlib/mpl-data/fonts/ttf
然後我不得不刪除fontlist.cache文件來裝載新的字體。
rm ~/.cache/matplotlib/fontList.cache
注意
您可以通過改變輸入到draw_networkx例如有不同的看法不發送linewidths
將顯示每個節點的圓形邊框,同樣如果您想要節點的特定背景色,請將color_node
從白色更改爲所需的顏色...有關詳細信息,請檢查documentation。
您是否想要更改標籤或爲節點更改繪製的實際圓? – Joel
感謝您的提問。我正在嘗試將圓圈更改爲圖像。 – Vicky
我不認爲它是內置的,但我認爲它不是很難。我沒有時間去完成整個解決方案,但這裏有一個提示,希望能夠引導其他人填寫詳細信息:您可以使用networkx來獲取節點位置。然後使用matplotlib在這些位置繪製圖像。然後繪製邊緣。 – Joel