networkxAan de slag met networkx


Opmerkingen

Deze sectie geeft een overzicht van wat networkx is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen networkx vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor netwerkx nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Basisprogramma voor het weergeven van knooppunten in matplotlib met behulp van networkx

import networkx as nx  # importing networkx package
import matplotlib.pyplot as plt # importing matplotlib package and pyplot is for displaying the graph on canvas 
b=nx.Graph()
b.add_node('helloworld')
b.add_node(1)
b.add_node(2)
'''Node can be called by any python-hashable obj like string,number etc'''
nx.draw(b)  #draws the networkx graph containing nodes which are declared till before
plt.show()  # displays the networkx graph on matplotlib canvas
 

Aanvullende toelichting:

nx.draw(b,nodelist=[1,'helloworld']) #displays the particular nodes which are given by nodelist only 
nx.draw_networkx(b,nodelist=[1,'helloworld']) #displays the node along with its name given by us i.e 1, hello  respectively
 

Installatie of instellingen

Welkom in de wereld van Graphs. Als u verbonden gegevens hebt, hebt u mogelijk een van de typen grafieken nodig om die patronen te modelleren. Er zijn verschillende dingen die met Grafieken kunnen worden gedaan, zoals het in kaart brengen van verkeerspatronen, het beheren van waterdistributienetwerken, sociale media-analyse, enz ... In wezen moeten we knooppunten en randen kunnen maken met gegevens die aan elk daarvan zijn gekoppeld.

NetworkX is een bibliotheek die zich bezighoudt met het maken / importeren / exporteren / manipuleren / algoritmen / plotten van de Graph-database. U kunt verschillende typen netwerkgrafieken gaan gebruiken. Bijvoorbeeld: Facebook kan hun gebruikers in een gewone grafiek plaatsen ()

import networkx as nx
facebook = nx.Graph()  
facebook.add_node('you')
facebook.add_node('me')
if both_agree_to_be_friends('you','me'):
    facebook.add_edge('you','me') #order isn't important here.
 

Facebook zou een gewone Graph () gebruiken omdat er niets speciaals is aan de rand tussen knooppunten. Dit Facebook-voorbeeld kan slechts één rand (vriendschap) tussen knooppunten hebben.

Een ander type grafiek is een gerichte grafiek. Twitter zou een gerichte grafiek gebruiken omdat de knooppunten een richting hebben. In Twitter kan ik je volgen, maar je hoeft me niet te volgen. Dus we zouden dat kunnen vertegenwoordigen met deze code:

import networkx as nx
twitter = nx.DiGraph()
twitter.add_node('you')
twitter.add_node('me')
twitter.add_edge('me','you') #order is important here.
 

Dit is hoe Twitter 'ik' zou kunnen instellen om 'jou' te volgen, maar niet andersom.

Er zijn ook MultiGraphs () en MultiDiGraphs () voor het geval u meer dan één rand tussen twee knooppunten wilt. Deze vier soorten hebben betrekking op een breed scala aan problemen die kunnen worden weergegeven met grafieken. Als u wilt, kunt u een gegevenswoordenboek toevoegen aan zowel knooppunten als randen. De documentatie over deze module is ongelooflijk. Elk algoritme is goed onderzocht en goed geïmplementeerd. Ik hoop dat je ermee werkt.

Installatie-instructies: de gedetailleerde instructies voor het installeren van NetworkX zijn hier beschikbaar.

Net als bij elk ander python-pakket, kan NetworkX worden geïnstalleerd met behulp van pip, Miniconda / Anaconda en van broncode.

Installeren met pip

pip install networkx
 

Er zal een poging worden gedaan om een geschikte versie van NetworkX te vinden en te installeren die overeenkomt met uw besturingssysteem en Python-versie.

Om pip te gebruiken, moet setuptools geïnstalleerd zijn.

Als u de ontwikkelingsversie van GitHub wilt installeren, gebruikt u de opdracht

pip install git://github.com/networkx/networkx.git#egg=networkx
 

Miniconda en Anaconda gebruiken conda voor software-installatie / updates.

NetworkX is momenteel geïnstalleerd met Anaconda . Miniconda wordt standaard niet met NetworkX geleverd.

U kunt NetworkX bijwerken naar de nieuwste versie met:

conda install networkx
 

of als u de NetworkX-installatie dan wilt bijwerken

conda update networkx
 

Installeren vanaf bron

Bronbestand archief

  1. Download de bron van https://pypi.python.org/pypi/networkx/ of download de nieuwste versie .
  2. Pak de map uit en wijzig deze in de bronmap (deze zou de bestanden README.txt en setup.py moeten hebben).
  3. Voer python setup.py install om te bouwen en installeren
  4. (Optioneel) Voer nosetests uit om de tests uit te voeren als u een neus hebt geïnstalleerd.

Installeren vanuit GitHub

  1. Kloon de NetworkX-repository (zie https://github.com/networkx/networkx/ voor opties)

    git clone https://github.com/networkx/networkx.git
     
  2. Wijzig de map in NetworkX

  3. Voer python setup.py install om te bouwen en installeren

  4. (Optioneel) Voer nosetests uit om de tests uit te voeren als u een neus hebt geïnstalleerd.

Als u geen toestemming hebt om software op uw systeem te installeren, kunt u met behulp van de --user , --prefix of --home naar setup.py in een andere map installeren.

Vereisten Om NetworkX te gebruiken, hebt u Python 2.7, 3.3 of hoger nodig

Optionele pakketten

  1. NumPy: biedt matrixrepresentatie van grafieken en wordt in sommige grafiekalgoritmen gebruikt voor hoogwaardige matrixberekeningen. ( http://scipy.org/Download)
  2. SciPy: biedt een beperkte matrixweergave van grafieken en veel numerieke wetenschappelijke hulpmiddelen. ( http://scipy.org/Download)
  3. Matplotlib: biedt een flexibele tekening van grafieken. ( http://matplotlib.sourceforge.net/)
  4. GraphViz in combinatie met PyGraphviz ( http://pygraphviz.github.io) of pydotplus ( https://github.com/carlos-jenkins/pydotplus) : biedt algoritmen voor het tekenen van grafieken en grafieken. ( http://graphviz.org)
  5. PyYAML: vereist voor lezen en schrijven in YAML-indeling. ( http://pyyaml.org)

3 : http://conda.pydata.org/miniconda.html 2 : https://networkx.github.io/documentation/development/install.html