Plotly - Grafico a barre e grafico a torta
In questo capitolo impareremo come creare grafici a barre ea torta con l'aiuto di Plotly. Cominciamo con la comprensione del grafico a barre.
Grafico a barre
Un grafico a barre presenta dati categoriali con barre rettangolari con altezze o lunghezze proporzionali ai valori che rappresentano. Le barre possono essere visualizzate verticalmente o orizzontalmente. Aiuta a mostrare confronti tra categorie discrete. Un asse del grafico mostra le categorie specifiche da confrontare e l'altro asse rappresenta un valore misurato.
L'esempio seguente traccia un semplice file bar chartcirca il numero di studenti iscritti a diversi corsi. Ilgo.Bar() restituisce una barra con la coordinata x impostata come elenco di argomenti e la coordinata y come numero di studenti.
import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
data = [go.Bar(
x = langs,
y = students
)]
fig = go.Figure(data=data)
iplot(fig)
L'output sarà come mostrato di seguito:
Per visualizzare un grafico a barre raggruppato, il barmode la proprietà dell'oggetto Layout deve essere impostata su group. Nel codice seguente, più tracce che rappresentano gli studenti in ogni anno vengono tracciate rispetto alle materie e visualizzate come grafico a barre raggruppato.
branches = ['CSE', 'Mech', 'Electronics']
fy = [23,17,35]
sy = [20, 23, 30]
ty = [30,20,15]
trace1 = go.Bar(
x = branches,
y = fy,
name = 'FY'
)
trace2 = go.Bar(
x = branches,
y = sy,
name = 'SY'
)
trace3 = go.Bar(
x = branches,
y = ty,
name = 'TY'
)
data = [trace1, trace2, trace3]
layout = go.Layout(barmode = 'group')
fig = go.Figure(data = data, layout = layout)
iplot(fig)
L'output dello stesso è il seguente:
Il barmodedetermina come vengono visualizzate sul grafico le barre nella stessa coordinata di posizione. I valori definiti sono "stack" (barre sovrapposte l'una sull'altra), "relative", (le barre sono sovrapposte l'una sull'altra, con valori negativi sotto l'asse, valori positivi sopra), "group"(barre tracciate una accanto all'altra).
Modificando la proprietà del barmode in 'stack'il grafico tracciato appare come di seguito -
Grafico a torta
Un grafico a torta visualizza solo una serie di dati. Pie Charts mostra la dimensione degli articoli (chiamata wedge) in una serie di dati, proporzionale alla somma degli elementi. I punti dati vengono visualizzati come percentuale dell'intera torta.
Il pie() funzione in graph_objs modulo - go.Pie(), restituisce una traccia a torta. Due argomenti obbligatori sonolabels e values. Tracciamo un semplice grafico a torta dei corsi di lingua rispetto al numero di studenti come nell'esempio fornito di seguito.
import plotly
plotly.tools.set_credentials_file(
username = 'lathkar', api_key = 'U7vgRe1hqmRp4ZNf4PTN'
)
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected = True)
import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
trace = go.Pie(labels = langs, values = students)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)
Il seguente output viene visualizzato nel notebook Jupyter -
Donut chartè un grafico a torta con un foro rotondo al centro che lo fa sembrare una ciambella. Nell'esempio seguente, due grafici ad anello vengono visualizzati nel layout della griglia 1X2. Mentre 'label'layout è lo stesso per entrambe le tracce di torta, la destinazione di riga e colonna di ogni sottotrama è decisa dalla proprietà del dominio.
A tal fine, utilizziamo i dati dei seggi partitici e della quota di voto nelle elezioni parlamentari del 2019. Immettere il seguente codice nella cella del notebook Jupyter -
parties = ['BJP', 'CONGRESS', 'DMK', 'TMC', 'YSRC', 'SS', 'JDU','BJD', 'BSP','OTH']
seats = [303,52,23,22,22,18,16,12,10, 65]
percent = [37.36, 19.49, 2.26, 4.07, 2.53, 2.10, 1.46, 1.66, 3.63, 25.44]
import plotly.graph_objs as go
data1 = {
"values": seats,
"labels": parties,
"domain": {"column": 0},
"name": "seats",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
}
data2 = {
"values": percent,
"labels": parties,
"domain": {"column": 1},
"name": "vote share",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
}
data = [data1,data2]
layout = go.Layout(
{
"title":"Parliamentary Election 2019",
"grid": {"rows": 1, "columns": 2},
"annotations": [
{
"font": {
"size": 20
},
"showarrow": False,
"text": "seats",
"x": 0.20,
"y": 0.5
},
{
"font": {
"size": 20
},
"showarrow": False,
"text": "votes",
"x": 0.8,
"y": 0.5
}
]
}
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)
L'output dello stesso è dato di seguito -