J'ai essayé d'afficher le diagramme de réseau en utilisant NetworkX de Python dans les données de lien Wikipedia que j'ai importé plus tôt, mais il a fallu du temps pour construire l'environnement. Alors laissez la procédure. Au fait, j'ai découvert NetworkX lors du Python Beginners 'Gathering qui est sorti la semaine dernière.
Excusez-moi d'un point très rudimentaire, mais utilisez la commande brew pour vérifier si l'outil de gestion de paquets Homebrew pour Mac est installé.
brew --version
Si vous ne l'avez pas encore installé, installez Homebrew.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
/master/install)"
S'il a été installé, mettez-le à jour avec la dernière version.
brew update
Mac a 2 séries de Python depuis le début, mais je veux garder cet environnement et faire du projet une série de 3, donc je peux basculer automatiquement entre plusieurs versions de l'environnement Python [pyenv-virtualenv]( (https://github.com/yyuu/pyenv-virtualenv) est installé.
pyenv est un outil de commutation multi-environnement Python (gestion de version simple Python) virtualenv est le constructeur officiel d'environnement Python virtuel Python.
Il semble que pyenv-virtualenv soit une bibliothèque qui utilise virtualenv de pyenv. Quoi qu'il en soit, avec pyenv-virtualenv, vous pourrez basculer automatiquement n'importe quel répertoire entre Python 2 et 3.
Qiita a déjà beaucoup d'explications sur la construction de l'environnement pour pyenv et pyenv-virtualenv.
brew install pyenv-virtualenv
À propos, cette installation installera également automatiquement le pyenv dépendant.
$ brew install pyenv-virtualenv
==> Installing dependencies for pyenv-virtualenv: autoconf, pkg-config, openssl, readline, pyenv
Définir les variables d'environnement après l'installation
~/.bash_profile
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Refléter les changements dans les variables d'environnement
source ~/.bash_profile
Affiche la version installable avec pyenv.
pyenv install --list
Recherchez la dernière version de Python 3 dans la liste et installez-la.
pyenv install 3.5.1
Python sera téléchargé et installé à partir de www.python.org comme ceci.
$ pyenv install 3.5.1
Downloading Python-3.5.1.tgz...
-> https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
Installing Python-3.5.1...
Une fois terminé, reflétez à nouveau les modifications des variables d'environnement.
source ~/.bash_profile
Accédez à votre répertoire de travail et faites fonctionner Python 3.5.1 dans ce répertoire.
cd [Tout répertoire de travail pour Python 3]
pyenv local 3.5.1
Lorsque vous avez terminé, assurez-vous que l'environnement change.
$ cd ~
$ python --version
Python 2.7.10
$ cd [Tout répertoire de travail pour Python 3]
$ python --version
Python 3.5.1
Je vais installer NetworkX, mais j'utiliserai le système de gestion de paquets Python pip pour l'installer. En Python3, la commande pip est attachée par défaut, mais si c'est la valeur par défaut, cela semble être une ancienne version, je vais donc la mettre à jour.
cd [Tout répertoire de travail pour Python 3]
pip install --upgrade pip
$ pip list
Omission
pip (7.1.2)
Omission
$ pip install --upgrade pip
$ pip list
Omission
pip (8.0.2)
Omission
NetworkX est une bibliothèque pour traiter des réseaux complexes en Python.
NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
cd [Tout répertoire de travail pour Python 3]
pip install networkx
Après l'installation, il semble que le module networkx soit placé sous .pyenv / versions / 3.5.1.
$ ls ~/.pyenv/versions/3.5.1/lib/python3.5/site-packages/networkx
__init__.py classes drawing generators relabel.py tests
__pycache__ convert.py exception.py linalg release.py utils
algorithms convert_matrix.py external readwrite testing version.py
$ ls ~/.pyenv/versions/3.5.1/share/doc/networkx-1.11/examples
3d_drawing advanced algorithms basic drawing graph multigraph pygraphviz
À titre de test, exécutons le Premier échantillon sur le site NetrowkX.
networkx-sample.py
import networkx as nx
G=nx.Graph()
G.add_node("spam")
G.add_edge(1,2)
print(G.nodes())
print(G.edges())
Créez un script networkx-sample.py dans l'environnement défini dans Python3 et exécutez-le.
$ cd [Tout répertoire de travail pour Python 3]
$ python networkx-sample.py
['spam', 2, 1]
[(2, 1)]
Les nœuds et les bords du réseau sont affichés dans la console.
Ensuite, je vais essayer de trouver et d'exécuter l 'Sample qui affiche graphiquement le réseau à partir du site officiel. , Il semble que la bibliothèque matplotlib soit nécessaire pour l'affichage des graphiques.
Installez également avec la commande pip.
pip install matplotlib
Si vous exécutez l'exemple tel quel, une erreur se produit. Le message d'erreur pointe-t-il vers cette page?
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework.
See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends.
If you are Working with Matplotlib in a virtual enviroment see 'Working with Matplotlib in Virtual environments' in the Matplotlib FAQ
(Le message d'erreur a une longue ligne, donc il se brise.)
Je ne l'ai pas résolu même si je l'ai fait comme écrit, je vais donc chercher une solution auprès de Qiita. Référence: matplotlib etc. ne peut pas être importé dans l'environnement VirtualEnv
Créer un nouveau fichier matplotlibrc
~/.matplotlib/matplotlibrc
Description d'une ligne dans matplotlibrc
backend : TkAgg
Créez un script Python en copiant l'exemple Random Geometric Graph du site officiel.
RandomGeometricGraph.py
import networkx as nx
import matplotlib.pyplot as plt
G=nx.random_geometric_graph(200,0.125)
# position is stored as node attribute data for random_geometric_graph
pos=nx.get_node_attributes(G,'pos')
# find node near center (0.5,0.5)
dmin=1
ncenter=0
for n in pos:
x,y=pos[n]
d=(x-0.5)**2+(y-0.5)**2
if d<dmin:
ncenter=n
dmin=d
# color by path length from node near center
p=nx.single_source_shortest_path_length(G,ncenter)
plt.figure(figsize=(8,8))
nx.draw_networkx_edges(G,pos,nodelist=[ncenter],alpha=0.4)
nx.draw_networkx_nodes(G,pos,nodelist=p.keys(),
node_size=80,
node_color=[float(v) for v in p.values()],
cmap=plt.cm.Reds_r)
plt.xlim(-0.05,1.05)
plt.ylim(-0.05,1.05)
plt.axis('off')
plt.savefig('random_geometric_graph.png')
plt.show()
Cela ne fonctionnait pas dans Python3 tel quel, j'ai donc changé une ligne.
original
node_color=p.values()
Je l'ai changé comme ça. Je pense que c'est la différence entre les séries 2 et 3, mais cela peut être dû à la version de matplotlib.
node_color=[float(v) for v in p.values()]
Lorsque j'ai exécuté l'exemple, un diagramme de réseau a été affiché et un fichier random_geometric_graph.png a été créé.
python RandomGeometricGraph.py
Recommended Posts