Trace complotement de beaux graphiques avec une petite quantité de code, mais comme je n'ai utilisé que matplotlib et que je ne savais pas grand-chose, c'est un mémorandum de la personne qui a essayé de démarrer en vérifiant.
Google colaboratory
S'il s'agit de colab, il n'y a pas d'installation, mais si nécessaire, vous pouvez l'installer avec pip
pip install plotly
J'ai des données de séries chronologiques qui peuvent être utilisées immédiatement avec seaborn, donc je vais les utiliser. Ce qui suit est la préparation des données, alors ignorez-la
import seaborn as sns
import pandas as pd
from calendar import month_name
month_name_mappings = {name[:3]: n for n, name in enumerate(month_name)}
#Juste la préparation des données
df = sns.load_dataset('flights')
df["month"] = df.month.apply(lambda x: month_name_mappings[x])
df["year-month"] = pd.to_datetime(df.year.astype(str) + "-" + df.month.astype(str))
ts_data = df[["passengers", "year-month"]].set_index("year-month")["passengers"]
ts_data
year-month
1949-01-01 112
1949-02-01 118
1949-03-01 132
1949-04-01 129
1949-05-01 121
...
1960-08-01 606
1960-09-01 508
1960-10-01 461
1960-11-01 390
1960-12-01 432
Name: passengers, Length: 144, dtype: int64
Des données simples sur le nombre de passagers par mois.
Créons un graphique
import plotly.graph_objects as go
fig = go.Figure()
fig.show()
J'ai un graphique, je vais ajouter diverses choses ici.
#Graphique linéaire
fig = go.Figure()
fig.add_trace(go.Scatter(x=ts_data.index, y=ts_data.values, name="passengers"))
fig.show()
Essayez d'afficher la mémoire en affichage logarithmique
#Graphique linéaire
fig = go.Figure()
fig.add_trace(go.Scatter(x=ts_data.index, y=ts_data.values, name="passengers"))
#Pour personnaliser l'apparence, jouez avec la mise en page
fig.update_layout(yaxis_type="log")
fig.show()
Je veux le rendre plus luxueux, je vais donc essayer de le visualiser de différentes manières
#Pétrir un peu de données
ts_data_monthly = df.groupby("month")["passengers"].apply(list)
ts_sum_yearly = df.groupby("year")["passengers"].sum()
#Je souhaite créer plusieurs graphiques linéaires
ts_data_monthly
month
1 [112, 115, 145, 171, 196, 204, 242, 284, 315, ...
2 [118, 126, 150, 180, 196, 188, 233, 277, 301, ...
3 [132, 141, 178, 193, 236, 235, 267, 317, 356, ...
4 [129, 135, 163, 181, 235, 227, 269, 313, 348, ...
5 [121, 125, 172, 183, 229, 234, 270, 318, 355, ...
6 [135, 149, 178, 218, 243, 264, 315, 374, 422, ...
7 [148, 170, 199, 230, 264, 302, 364, 413, 465, ...
8 [148, 170, 199, 242, 272, 293, 347, 405, 467, ...
9 [136, 158, 184, 209, 237, 259, 312, 355, 404, ...
10 [119, 133, 162, 191, 211, 229, 274, 306, 347, ...
11 [104, 114, 146, 172, 180, 203, 237, 271, 305, ...
12 [118, 140, 166, 194, 201, 229, 278, 306, 336, ...
Name: passengers, dtype: object
#Je veux faire un graphique à barres
ts_sum_yearly
year
1949 1520
1950 1676
1951 2042
1952 2364
1953 2700
1954 2867
1955 3408
1956 3939
1957 4421
1958 4572
1959 5140
1960 5714
Name: passengers, dtype: int64
#étiquette(axe x)
ts_labels = ts_sum_yearly.index
ts_labels
Int64Index([1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959,
1960],
dtype='int64', name='year')
Visualisons-le, j'ai un peu joué avec la mise en page.
fig = go.Figure()
#Faire des données de séries chronologiques mensuelles un graphique à lignes de pliage
for month, passengers in ts_data_monthly.iteritems():
fig.add_trace(go.Scatter(x=ts_labels, y=passengers, name=str(month)+"Mois", yaxis='y2'))
#Faire un graphique à barres pour le total annuel
fig.add_trace(go.Bar(x=ts_labels, y=ts_sum_yearly.values, name="total", yaxis="y1"))
#Pour personnaliser l'apparence, jouez avec la mise en page
#Puisqu'il y a deux axes, il n'y a pas de mémoire
fig.update_layout(
title={
"text": "Données de séries chronologiques sur le nombre de passagers",
"x":0.5,
"y": 0.9
},
legend={
"orientation":"h",
"x":0.5,
"xanchor":"center"
},
yaxis1={
"title": "Nombre de passagers(total)",
"side": "left",
"showgrid":False
},
yaxis2={
"title": "Nombre de passagers(Par mois)",
"side": "right",
"overlaying": "y",
"showgrid":False
}
)
fig.show()
Vous pouvez faire flotter la légende. C'est incroyable de pouvoir dessiner un graphique qui peut être déplacé un peu avec une si petite quantité de code ...
Donuts (mignon)
import numpy as np
ts_sum_monthly = df.groupby("month")["passengers"].sum()
#Faites en sorte que cela ressemble à une pizza coupée en lune avec le plus de passagers
pull=[0]*12
pull[np.argmax(ts_sum_monthly.values)] = 0.2
fig = go.Figure()
fig.add_trace(go.Pie(
labels=[str(month) + "Mois" for month in ts_sum_monthly.index],
values=ts_sum_monthly.values,
hole=.3,
pull=pull
)
)
fig.update_layout(
title={
"text": "Pourcentage de passagers(1949~1960 au total)",
"x":0.5,
"y": 0.9
}
)
fig.show()
Créez un graphique circulaire pour le nombre total de passagers chaque année
from plotly.subplots import make_subplots
specs = [[{'type':'domain'}, {'type':'domain'}, {'type':'domain'}, {'type':'domain'}] for _ in range(3)]
# 3*Divisez le graphique en 4 grilles
fig = make_subplots(rows=3, cols=4, specs=specs)
#Position du titre de l'étiquette sur chaque graphe circulaire de l'étiquette
pos_x = [0.09, 0.37, 0.63, 0.91]
pos_y = [0.9, 0.5, 0.1]
annotations = []
# (row, col)Placez un graphique circulaire à la position de
row = 0
for i, (year, df_yearly) in enumerate(df.groupby(["year"])[["month","passengers"]]):
pull=[0]*12
pull[np.argmax(df_yearly.passengers.values)] = 0.2
col = i%4+1
if col == 1:
row += 1
annotations.append({
"text": str(year)+"Année",
"x": pos_x[col-1],
"y": pos_y[row-1],
"font_size": 10,
"showarrow":False
})
fig.add_trace(go.Pie(
labels=[str(month) + "Mois" for month in df_yearly.month.values],
values=df_yearly.passengers.values,
name=str(year)+"Année",
hole=.3,
pull=pull
),
row, col
)
fig.update_layout(
title={
"text": "Pourcentage de passagers(Annuel)",
"x":0.5,
"y": 0.9
},
annotations=annotations
)
fig.show()
Suis-je le seul à être heureux que le graphique fonctionne? La prochaine fois, je voudrais résumer un framework Web appelé dash qui vous permet de créer des tableaux de bord avec plotly.
Recommended Posts