[Python] Créez un graphique qui peut être déplacé avec Plotly

introduction

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 **.

Environnement d'exécution

Installation

pip install plotlyInstallez complotement avec.

Capture de données

À 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")

Créer un graphique

Initialisation

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écification des données à tracer

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")
]

Spécification de la disposition du graphique

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"},
)

terrain

Si vous voulez l'afficher dans Jupyter, appelez ʻiplotpour créer un graphique. Appelezplot` 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éé. aa.gif

Cliquez ici pour une utilisation facile

Autres options

La taille de la zone graphique

layout = plotly.graph_objs.Layout(
    width=800, height=600,
)

Valeurs maximales et minimales de l'axe

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
)

Police de caractère

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},
)

autres

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.

Supprimez les boutons inutiles et "Modifier dans le tracé" dans la barre d'outils

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.

buttons.png

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.

Graphique Pandas Dataframe

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.

Conversion tracée de matplotlib

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)

(Pour copier lorsque vous souhaitez dessiner un graphique de ligne de pliage pour le moment)

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)

Recommended Posts

[Python] Créez un graphique qui peut être déplacé avec Plotly
Créez un graphique des devises qui peut être déplacé avec Plotly (2)
Créez un graphique des devises qui peut être déplacé avec Plotly (1)
Faisons un graphe avec python! !!
Faire un joli graphique avec plotly
Faisons un diagramme sur lequel on peut cliquer avec IPython
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
Mémo qui a fait un graphique pour animer avec intrigue
Comment créer un bot Janken qui peut être facilement déplacé (commentaire)
Créez une application Web qui peut être facilement visualisée avec Plotly Dash
[Python] Dessinez des données d'altitude sur une surface sphérique avec Plotly et dessinez un globe qui peut être tourné en rond et en rond
Déplacement de Raspberry Pi à distance afin qu'il puisse être connecté à une LED avec Python
Notes sur les connaissances Python utilisables avec AtCoder
Faites une loterie avec Python
Faisons une interface graphique avec python.
Créer un système de recommandation avec python
J'ai fait un package qui peut comparer des analyseurs morphologiques avec Python
[Python] Un programme qui crée des escaliers avec #
Faisons un jeu de shiritori avec Python
Faisons la voix lentement avec Python
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
[Python] Un programme qui trouve le nombre maximum de jouets pouvant être achetés avec votre argent
Un monde typé qui commence par Python
Créez un framework Web avec Python! (1)
Créez une application de bureau avec Python avec Electron
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
J'ai créé un modèle de projet Python générique
[Python] Un programme qui trouve une paire qui peut être divisée par une valeur spécifiée
Optimisation mathématique pour un travail gratuit avec Python + PuLP
J'ai fait un module PyNanaco qui peut charger des crédits nanaco avec python
[Python] Code qui peut être écrit avec la mort cérébrale au début lors du scraping en tant que débutant
Obtenez une liste des paramètres de caméra qui peuvent être définis avec cv2.VideoCapture et faites-en un type de dictionnaire
Types de fichiers pouvant être utilisés avec Go
Créer un bot Twitter Trend avec heroku + Python
[Python] Dessinez un graphe orienté avec Dash Cytoscape
Je veux faire un jeu avec Python
Créer une page qui se charge indéfiniment avec python
Vous pouvez facilement créer une interface graphique même avec Python
Essayez de créer un code de "décryptage" en Python
Répertorier les packages pouvant être mis à jour avec pip
Remplaçons UWSC par Python (5) Faisons un robot
Essayez de créer un groupe de dièdre avec Python
Notes pour créer des figures pouvant être publiées dans des revues avec matplotlib
Classe pour PYTHON qui peut être utilisée sans connaître LDAP
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Autour de l'authentification de PyDrive2, un package pour faire fonctionner Google Drive avec Python
Puisque python est lu comme "Pichon", il peut être exécuté avec "Pichon" (c'est une histoire)
Formatez les données DataFrame avec Pytorch sous une forme pouvant être entraînée avec NN
Comment installer la bibliothèque Python qui peut être utilisée par les sociétés pharmaceutiques
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Si vous souhaitez créer une application Windows (exe) qui peut être utilisée maintenant en utilisant uniquement Python
Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)