Ich habe versucht, das Netzwerkdiagramm mit NetworkX of Python in den Wikipedia-Linkdaten anzuzeigen, die ich zuvor importiert habe, aber es hat einige Zeit gedauert, die Umgebung zu erstellen. Verlassen Sie also das Verfahren. Übrigens habe ich bei Python Beginners 'Gathering, das letzte Woche veröffentlicht wurde, etwas über NetworkX erfahren.
Entschuldigen Sie mich von einem sehr rudimentären Punkt aus, aber überprüfen Sie mit dem Befehl brown, ob das Paketverwaltungstool Homebrew für Mac installiert ist.
brew --version
Wenn Sie es noch nicht installiert haben, installieren Sie Homebrew.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
/master/install)"
Wenn es installiert wurde, aktualisieren Sie es auf die neueste Version.
brew update
Mac hat von Anfang an zwei Python-Serien, aber ich möchte diese Umgebung beibehalten und das Projekt in drei Serien umwandeln, damit ich automatisch zwischen mehreren Versionen der Python-Umgebung wechseln kann [pyenv-virtualenv]( (https://github.com/yyuu/pyenv-virtualenv) ist installiert.
pyenv ist ein Python-Switching-Tool für mehrere Umgebungen (Simple Python-Versionsverwaltung). virtualenv ist der offizielle Builder für Python Virtual Python Environment.
Es scheint, dass pyenv-virtualenv eine Bibliothek ist, die virtualenv von pyenv verwendet. Mit pyenv-virtualenv können Sie jedes Verzeichnis automatisch zwischen Python 2 und 3 wechseln.
Qiita hat bereits viele Erklärungen zum Aufbau der Umgebung für pyenv und pyenv-virtualenv.
brew install pyenv-virtualenv
Diese Installation installiert übrigens auch automatisch den abhängigen Pyenv.
$ brew install pyenv-virtualenv
==> Installing dependencies for pyenv-virtualenv: autoconf, pkg-config, openssl, readline, pyenv
Legen Sie nach der Installation Umgebungsvariablen fest
~/.bash_profile
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Änderungen in Umgebungsvariablen widerspiegeln
source ~/.bash_profile
Lassen Sie uns die installierbare Version mit pyenv anzeigen.
pyenv install --list
Suchen Sie die neueste Version von Python 3 aus der Liste und installieren Sie sie.
pyenv install 3.5.1
Python wird so von www.python.org heruntergeladen und installiert.
$ 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...
Wenn Sie fertig sind, spiegeln Sie die Änderungen in den Umgebungsvariablen erneut wider.
source ~/.bash_profile
Wechseln Sie in Ihr Arbeitsverzeichnis und lassen Sie Python 3.5.1 in diesem Verzeichnis funktionieren.
cd [Beliebiges Arbeitsverzeichnis für Python 3]
pyenv local 3.5.1
Wenn Sie fertig sind, stellen Sie sicher, dass die Umgebung wechselt.
$ cd ~
$ python --version
Python 2.7.10
$ cd [Beliebiges Arbeitsverzeichnis für Python 3]
$ python --version
Python 3.5.1
Ich bin im Begriff, Network X zu installieren, aber ich werde das Python-Paketverwaltungssystem pip verwenden, um es zu installieren. In Python3 ist der Befehl pip standardmäßig angehängt, aber wenn es der Standardbefehl ist, scheint es sich um eine alte Version zu handeln, daher werde ich ihn aktualisieren.
cd [Beliebiges Arbeitsverzeichnis für Python 3]
pip install --upgrade pip
$ pip list
Unterlassung
pip (7.1.2)
Unterlassung
$ pip install --upgrade pip
$ pip list
Unterlassung
pip (8.0.2)
Unterlassung
NetworkX ist eine Bibliothek für den Umgang mit komplexen Netzwerken in Python.
NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
cd [Beliebiges Arbeitsverzeichnis für Python 3]
pip install networkx
Nach der Installation scheint sich das networkx-Modul unter .pyenv / version / 3.5.1 zu befinden.
$ 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
Versuchen Sie als Test, das Erste Beispiel auf der NetrowkX-Site auszuführen.
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())
Erstellen Sie ein networkx-sample.py-Skript in der in Python3 festgelegten Umgebung und führen Sie es aus.
$ cd [Beliebiges Arbeitsverzeichnis für Python 3]
$ python networkx-sample.py
['spam', 2, 1]
[(2, 1)]
Die Knoten und Kanten des Netzwerks werden in der Konsole angezeigt.
Als nächstes werde ich versuchen, das Beispiel zu finden und auszuführen, das das Netzwerk auf der offiziellen Website grafisch anzeigt. Es scheint, dass die Bibliothek matplotlib für die Diagrammanzeige erforderlich ist.
Installieren Sie auch mit dem Befehl pip.
pip install matplotlib
Wenn Sie das Beispiel so ausführen, wie es ist, tritt ein Fehler auf. Zeigt die Fehlermeldung auf diese Seite?
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
(Die Fehlermeldung hat eine lange Zeile, daher wird sie unterbrochen.)
Ich habe es nicht gelöst, auch wenn ich es wie geschrieben gemacht habe, also werde ich nach einer Lösung von Qiita suchen. Referenz: matplotlib usw. kann nicht in eine VirtualEnv-Umgebung importiert werden
Erstellen Sie eine neue matplotlibrc-Datei
~/.matplotlib/matplotlibrc
Eine Zeilenbeschreibung in matplotlibrc
backend : TkAgg
Erstellen Sie ein Python-Skript, indem Sie das Beispiel Random Geometric Graph von der offiziellen Website kopieren.
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()
In Python3 hat es nicht so funktioniert, also habe ich eine Zeile geändert.
original
node_color=p.values()
Ich habe es so geändert. Ich denke, es ist der Unterschied zwischen 2 und 3 Serien, aber es kann an der Version von matplotlib liegen.
node_color=[float(v) for v in p.values()]
Als ich das Beispiel ausführte, wurde irgendwie ein Netzwerkdiagramm angezeigt und eine random_geometric_graph.png-Datei erstellt.
python RandomGeometricGraph.py
Recommended Posts