Décrit l'utilisation de base de Plotly, une bibliothèque qui peut être utilisée à partir de Python. Comme vous pouvez le voir dans l'exemple Link, Plotly vous permet de créer une grande variété de graphiques ** mobiles **. ..
De plus, Plotly dispose d'une fonction qui vous permet d'éditer et de publier le graphique créé sur le Web. Cette fois, nous allons tout exécuter en local **.
pip install plotly
Installez complotement avec.
À titre d'exemple, [Wikipedia](https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E4%BA%BA%E5%8F%A3% Représentons graphiquement les données sur le nombre de naissances et le taux de natalité pour chaque année au Japon, tirées de E7% B5% B1% E8% A8% 88).
Placez les données suivantes sous le nom birth.csv
dans le même dossier que le fichier Jupyter.
year,births,birth rate
2000,1190547,1.36
2001,1170662,1.33
2002,1153855,1.32
2003,1123610,1.29
2004,1110721,1.29
2005,1062530,1.26
2006,1092674,1.32
2007,1089818,1.34
2008,1091156,1.37
2009,1070035,1.37
2010,1071304,1.39
2011,1050806,1.39
2012,1037101,1.41
2013,1029816,1.43
2014,1003532,1.42
2015,1005656,1.46
Il est pratique d'utiliser Pandas pour importer et manipuler des données. Les pandas sont automatiquement inclus lorsque vous installez Anaconda.
import pandas as pd
raw = pd.read_csv("birth.csv")
Tout d'abord, exécutez le code ci-dessous pour tracer à l'intérieur de Jupyter. Non requis s'il n'est pas affiché dans Jupyter. Si vous définissez «connecté» sur «Vrai» dans l'argument, vous obtiendrez le Javascript de Plotly sur Internet.
import plotly
plotly.offline.init_notebook_mode(connected=False)
Spécifiez ensuite les données à tracer.
Cette fois, le nombre de naissances est représenté par un graphique à barres et le taux de natalité est représenté par un graphique en traits pointillés.
Préparez un tableau appelé data
, et s'il s'agit d'un graphique à barres, plotly.graph_objs.Bar
,
Pour un graphique en traits interrompus, spécifiez les données de l'axe X et de l'axe Y et le nom de la série dans plotly.graph_objs.Scatter
.
Vous pouvez tracer sur le deuxième axe en spécifiant yaxis =" y2 "
.
data = [
plotly.graph_objs.Bar(x=raw["year"], y=raw["births"], name="Births"),
plotly.graph_objs.Scatter(x=raw["year"], y=raw["birth rate"], name="Birth Rate", yaxis="y2")
]
Ensuite, spécifiez la disposition du graphique. Définissez le titre du graphique, la position de la légende et le deuxième axe.
layout = plotly.graph_objs.Layout(
title="Births and Birth Rate in Japan",
legend={"x":0.8, "y":0.1},
xaxis={"title":"Year"},
yaxis={"title":"Births"},
yaxis2={"title":"Birth Rate", "overlaying":"y", "side":"right"},
)
Si vous voulez l'afficher dans Jupyter, appelez ʻiplotpour créer un graphique. Appelez
plot` si vous voulez l'afficher en dehors de Jupyter ou créer du HTML. Si vous ne spécifiez pas de nom de fichier comme option,
temp-plot.html``` sera créé dans le même dossier.
fig = plotly.graph_objs.Figure(data=data, layout=layout)
plotly.offline.iplot(fig)
#plotly.offline.plot(fig)
Un graphique comme celui-ci sera créé.
Cliquez ici pour une utilisation facile
layout = plotly.graph_objs.Layout(
width=800, height=600,
)
Si vous voulez juste définir les valeurs maximum et minimum, spécifiez l'option range
pour ʻaxis`.
Si vous souhaitez recommencer l'échelle à partir de zéro ou si vous ne souhaitez pas afficher de nombres négatifs
Spécifiez "" à zéro "" ou "" non négatif "" pour l'option "mode de plage".
layout = plotly.graph_objs.Layout(
xaxis={"title":"Year", "range": [2010, 2016]}, #from year 2010 to 2016
yaxis={"title":"Births", "rangemode":"tozero"}, #starts from zero
)
font-family doit être le même que celui spécifié dans CSS.
layout = plotly.graph_objs.Layout(
font={"family":"Yu Gothic Bold, sans-selif", "size":20},
)
De plus, Plotly vous permet de spécifier des détails. Pour ces options, consultez le site Plotly (https://plot.ly/python/#layout-options) ou recherchez sur google.
Pour les données que vous ne souhaitez pas divulguer localement, il est agréable de voir les boutons «Enregistrer et modifier le tracé dans le cloud» et «Ploduced with Plotly» et le lien «Exporter vers plot.ly» dans le graphique que vous avez créé. Ce n'est pas bon. Par conséquent, je ne les afficherai pas.
Tout d'abord, vous pouvez supprimer «Exporter vers plot.ly» en spécifiant «show_link = False» lors du traçage.
plotly.offline.iplot(fig, show_link=False)
#plotly.offline.plot(fig, show_link=False)
D'autre part, l'option pour masquer les boutons de la barre d'outils est ~~ Post StackOverflow et [ Voyant que la pull request associée (https://github.com/plotly/plotly.py/pull/410) n'est pas fusionnée, elle ne semble pas exister. Par conséquent, nous allons prendre la méthode d'édition de plotly.min.js dans le dossier de Plotly, qui est lu par ʻinit_notebook_mode`. ~~ Avant de le savoir, j'ai pu le passer comme un argument d'iplot.
plotly.offline.iplot(fig, show_link=False, config={"displaylogo":False, "modeBarButtonsToRemove":["sendDataToCloud"]})
Vous pouvez l'effacer en faisant.
En utilisant une bibliothèque appelée Cufflinks, vous pouvez dessiner un tracé de Dataframe en écrivant simplement df.iplot ()
.
Voir [Python] Draw Pandas Dataframes in Plotly with Cufflinks.
Vous pouvez changer un graphe écrit avec matplotlib.pyplot
en un graphe interactif de Plotly simplement en tapant ʻiplot_mpl (fig)`.
import matplotlib.pyplot as plt
import plotly.offline
plotly.offline.init_notebook_mode()
fig = plt.figure()
plt.plot([1,3,4,2,1,3])
plotly.offline.iplot_mpl(fig)
Cependant, si vous souhaitez ajouter une légende, vous devez ajouter des efforts, est-ce donc toujours en cours de développement?
import matplotlib.pyplot as plt
import plotly.offline
import plotly.tools
plotly.offline.init_notebook_mode()
fig = plt.figure()
plt.plot([1,3,4,2,1,3], label="legend")
plt.title("title")
# plt.legend()Je n'ai pas besoin
plotly_fig = plotly.tools.mpl_to_plotly( fig )
plotly_fig['layout']['showlegend'] = True
plotly.offline.iplot(plotly_fig, show_link=False)
import plotly
plotly.offline.init_notebook_mode()
data = [
plotly.graph_objs.Scatter(y=[2,3,1,2,5,2], name="legend"),
plotly.graph_objs.Scatter(x=[1,2,3,4,5,6], y=[1,2,3,2,3,1], name="legend2"),
]
layout = plotly.graph_objs.Layout(
title="title",
xaxis={"title":"xlabel"},
yaxis={"title":"ylabel"},
)
fig = plotly.graph_objs.Figure(data=data, layout=layout)
plotly.offline.iplot(fig, show_link=False)