Sommario:
Video: Data Science in Python: gli ambienti di sviluppo 2024
I grafici sono utili per gli scienziati dei dati. Un grafico è una rappresentazione di dati che mostrano le connessioni tra i punti dati usando le linee in Pythopn. Lo scopo è di mostrare che alcuni punti dati si riferiscono ad altri punti dati, ma non tutti i punti dati che appaiono sul grafico.
Pensa a una mappa di un sistema di metropolitana. Ciascuna stazione si connette ad altre stazioni, ma nessuna singola stazione si connette a tutte le stazioni nel sistema di metropolitana. I grafici sono un argomento di divulgazione dei dati diffuso grazie al loro utilizzo nell'analisi dei social media. Quando si esegue l'analisi dei social media, si descrivono e si analizzano reti di relazioni, come amici o connessioni aziendali, da centri di social network come Facebook, Google+, Twitter o LinkedIn.
Le due rappresentazioni comuni dei grafici sono non orientate , dove il grafico mostra semplicemente le linee tra gli elementi di dati e diretti , dove le frecce aggiunte alla linea mostrano che i dati fluiscono in una particolare direzione. Ad esempio, si consideri una raffigurazione di un sistema idrico. Nella maggior parte dei casi, l'acqua scorre in un'unica direzione, quindi è possibile utilizzare un grafico diretto per rappresentare non solo le connessioni tra sorgenti e target per l'acqua, ma anche per mostrare la direzione dell'acqua utilizzando le frecce.
Sviluppo di grafici non orientati
Un grafico non orientato mostra semplicemente le connessioni tra i nodi. L'output non fornisce una direzione da un nodo all'altro. Ad esempio, quando si stabilisce la connettività tra le pagine Web, nessuna direzione è implicita. L'esempio seguente mostra come creare un grafico non orientato.
importare networkx come nx import matplotlib. pyplot come plt G = nx. Grafico () H = nx. Graph () G. add_node (1) G. add_nodes_from ([2, 3]) G. add_nodes_from (range (4, 7)) H. add_node (7) G. add_nodes_from (H) G. add_edge (1, 2) G. add_edge (1, 1) G. add_edges_from ([(2, 3), (3, 6), (4, 6), (5, 6)]) H. add_edges_from ([(4, 7), (5, 7), (6, 7)]) G. add_edges_from (H. Edges ()) nx. draw_networkx (G) plt. show ()
Questo esempio costruisce il grafico usando un numero di tecniche differenti. Inizia con l'importazione del pacchetto Networkx. Per creare un nuovo grafo non orientato, il codice chiama il costruttore Graph (), che può richiedere un numero di argomenti di input da utilizzare come attributi. Tuttavia, è possibile creare un grafico perfettamente utilizzabile senza utilizzare attributi, che è ciò che fa questo esempio.
Il modo più semplice per aggiungere un nodo è chiamare add_node () con un numero di nodo. È inoltre possibile aggiungere un elenco, un dizionario o un intervallo () di nodi utilizzando add_nodes_from (). In effetti, puoi importare nodi da altri grafici, se vuoi.
Anche se i nodi utilizzati nell'esempio si basano sui numeri, non è necessario utilizzare i numeri per i nodi. Un nodo può usare una singola lettera, una stringa o anche una data. I nodi hanno alcune restrizioni. Ad esempio, non è possibile creare un nodo utilizzando un valore booleano.
I nodi non hanno alcuna connettività all'inizio. È necessario definire le connessioni (bordi) tra di loro. Per aggiungere un singolo bordo, si chiama add_edge () con i numeri dei nodi che si desidera aggiungere. Come con i nodi, è possibile utilizzare add_edges_from () per creare più di un bordo utilizzando un elenco, un dizionario o un altro grafico come input. Ecco l'output di questo esempio (l'output potrebbe differire leggermente ma dovrebbe avere le stesse connessioni).
I grafi non diretti connettono i nodi insieme per formare schemi.Sviluppo di grafici diretti
I grafici diretti vengono utilizzati quando è necessario mostrare una direzione, ad esempio da un punto iniziale a un punto finale. Quando ottieni una mappa che mostra come passare da un punto specifico a un altro, il nodo iniziale e il nodo finale sono contrassegnati come tali e le linee tra questi nodi (e tutti i nodi intermedi) mostrano la direzione.
I tuoi grafici non devono essere noiosi. Puoi vestirli in tutti i modi in modo che lo spettatore ottenga ulteriori informazioni in modi diversi. Ad esempio, è possibile creare etichette personalizzate, utilizzare colori specifici per determinati nodi o fare affidamento sui colori per aiutare le persone a vedere il significato dei grafici.
È inoltre possibile modificare il peso della linea del bordo e utilizzare altre tecniche per contrassegnare un percorso specifico tra i nodi come migliore da scegliere. L'esempio seguente mostra molti (ma non quasi tutti) i modi in cui è possibile mascherare un grafico diretto e renderlo più interessante:
importare networkx come nx import matplotlib. pyplot come plt G = nx. DiGraph () G. add_node (1) G. add_nodes_from ([2, 3]) G. add_nodes_from (intervallo (4, 6)) G. add_path ([6, 7, 8]) G. add_edge (1, 2) G. add_edges_from ([(1, 4), (4, 5), (2, 3), (3, 6), (5, 6)]) colors = ['r', 'g', 'g', 'g', 'g', 'm', 'm', 'r'] labels = {1: 'Start', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: 'End'} dimensioni = [800, 300, 300, 300, 300, 600, 300, 800] nx. draw_networkx (G, node_color = colors, node_shape = "D", with_labels = True, labels = labels, node_size = sizes) plt. show ()
L'esempio inizia creando un grafico direzionale usando il costruttore DiGraph (). Si noti che il pacchetto NetworkX supporta anche i tipi di grafico MultiGraph () e MultiDiGraph (). Dai un'occhiata a questo elenco di tutti i tipi di grafico.
L'aggiunta di nodi è come lavorare con un grafico non orientato. È possibile aggiungere singoli nodi utilizzando add_node () e più nodi utilizzando add_nodes_from (). La chiamata add_path () consente di creare nodi e spigoli allo stesso tempo. L'ordine dei nodi nella chiamata è importante. Il flusso da un nodo a un altro va da sinistra a destra nell'elenco fornito alla chiamata.
L'aggiunta di spigoli equivale a lavorare anche con un grafico non orientato. È possibile utilizzare add_edge () per aggiungere un singolo bordo o add_edges_from () per aggiungere più spigoli alla volta. Tuttavia, l'ordine dei numeri dei nodi è importante.Il flusso va dal nodo sinistro al nodo destro in ogni coppia.
Questo esempio aggiunge colori nodo speciali, etichette, forma (solo una forma è usata) e dimensioni all'output. Si continua a chiamare su draw_networkx () per eseguire l'attività. Tuttavia, l'aggiunta dei parametri mostrati modifica l'aspetto del grafico. Notare che è necessario impostare with_labels su True per visualizzare le etichette fornite dal parametro labels. Ecco l'output di questo esempio.
Usa grafici diretti per mostrare la direzione tra i nodi.