Matplotlib vs ggplot2: quale dovresti usare?
Due delle librerie di visualizzazione dei dati più popolari in tutta la scienza dei dati sono ggplot2 e Matplotlib .
La libreria ggplot2 viene utilizzata nel linguaggio di programmazione statistica R mentre Matplotlib viene utilizzata in Python.
Sebbene entrambe le librerie consentano di creare visualizzazioni di dati altamente personalizzate, ggplot2 generalmente consente di farlo con meno righe di codice rispetto a Matplotlib.
Per illustrare questo punto, mostreremo come creare gli stessi tipi di grafici utilizzando entrambe le librerie.
Grafici a linee: ggplot2 vs Matplotlib
Il codice seguente mostra come creare un grafico a linee utilizzando ggplot2 :
library (ggplot2) #create data frame df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), sales=c(2, 4, 5, 8, 6, 12, 15, 19, 15, 22)) #create line chart ggplot(df, aes(x=day, y=sales)) + geom_line(size= 1.2 , col=' purple ') + ggtitle(' Sales by Day ') + xlab(' Day ') + ylab(' Sales ')
E il codice seguente mostra come creare lo stesso grafico a linee utilizzando Matplotlib :
import pandas as pd import matplotlib. pyplot as plt #createDataFrame df = pd. DataFrame ({' day ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' sales ': [2, 4, 5, 8, 6, 12, 15, 19, 15, 22]}) #create line chart plt. plot (df. day , df. sales , color=' purple ') plt. title (' Sales by Day ', loc=' left ') plt. ylabel (' Sales ') plt. xlabel (' Day ')
Per questo esempio, il numero di righe di codice necessarie per generare ogni grafico è approssimativamente lo stesso tra ggplot2 e Matplotlib.
Grafici a dispersione: ggplot2 contro Matplotlib
Il codice seguente mostra come creare un grafico a dispersione in ggplot2 in cui i punti sono colorati per categoria:
library (ggplot2) #create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), assists=c(1, 2, 2, 4, 5, 7, 8, 10), points=c(4, 6, 10, 8, 12, 15, 22, 28)) #create scatterplot ggplot(df, aes(x=assists, y=points)) + geom_point(aes(col=team), size= 3 )
E il codice seguente mostra come creare lo stesso grafico a dispersione utilizzando Matplotlib :
import pandas as pd import matplotlib. pyplot as plt #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' assists ': [1, 2, 2, 4, 5, 7, 8, 10], ' points ': [4, 6, 10, 8, 12, 15, 22, 28]}) #define colors to use color_list = [] for x in df[' team ']: if x == ' A ': color_list. append (' #F8766D ') else : color_list. append (' #00BFC4 ') #create scatterplot plt. scatter (df. assists , df. points , c=color_list) plt. ylabel (' points ') plt. xlabel (' assists ')
Tieni presente che abbiamo dovuto utilizzare molte più righe di codice in Matplotlib per generare lo stesso grafico di ggplot2.
Istogrammi: ggplot2 vs Matplotlib
Il codice seguente mostra come creare un istogramma in ggplot2 :
library (ggplot2) #create data frame df <- data. frame (x=c(2, 2, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8, 10, 11, 11, 11, 12, 13, 14, 14)) #create scatterplot ggplot(df, aes(x=x)) + geom_histogram(bins= 6 , fill=' red ', color=' black ') + ggtitle(' My Histogram ')
E il codice seguente mostra come creare un istogramma simile utilizzando Matplotlib :
import pandas as pd import matplotlib. pyplot as plt #createDataFrame df = pd. DataFrame ({' x ': [2, 2, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8, 10, 11, 11, 11, 12, 13, 14, 14]}) #create histogram plt. hist (df[' x '], bins= 6 , color=' red ', ec=' black ') plt. title (' My Histogram ', loc=' left ') plt. xlabel (' x ') plt. ylabel (' Count ')
Ancora una volta la versione Matplotlib richiede più righe di codice rispetto a ggplot2.
Conclusione
ggplot2 e Matplotlib ti consentono di creare visualizzazioni di dati altamente personalizzabili, ma ggplot2 tende a utilizzare meno codice.
Spesso la preferenza tra ggplot2 e Matplotlib dipende semplicemente dal linguaggio di programmazione utilizzato per l’analisi dei dati.
Le persone che utilizzano Python tendono a utilizzare Matplotlib perché possono eseguire l’analisi dei dati e creare visualizzazioni di dati utilizzando un unico linguaggio di programmazione.
Al contrario, le persone che utilizzano R tendono a utilizzare ggplot2 perché consente loro di eseguire tutte le analisi e visualizzazioni dei dati in un unico linguaggio di programmazione.