[PYTHON] [Visualisation] J'ai essayé d'utiliser Bokeh / plotly! 【mémorandum】

en premier

Cette fois, j'ai abordé Bokeh et intrigue, alors je voudrais le laisser dans l'article sous forme de mémorandum. ――Veuillez noter que cet article est rédigé comme un mémorandum de votre choix en faisant référence à divers articles. ――Veuillez noter que cet article est rédigé dans le cadre de ma compréhension et que l'exactitude du contenu ne peut être garantie (veuillez me le faire savoir si vous faites une erreur. est).

1. Qu'est-ce que Bokeh?

"En premier lieu, bokeh (anglais: bokeh) _ est la beauté de la zone floue créée en dehors de la plage focale de l'objectif, et la méthode d'expression qui l'utilise intentionnellement ([de Wikipedia](https: /) /ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B1(%E5%86%99%E7%9C%9F))) " C'est vrai (qu'est-ce que c'est?).

Maintenant, revenons à la bibliothèque visualisation qui peut être utilisée avec python. J'utilise habituellement matplotlib / seaborn, mais j'ai eu l'idée qu'il y a quelque chose qui peut être exprimé un peu plus dynamiquement (_ ≒ interactif_). Les graphiques affichés ci-dessous sont tous des images et ne peuvent pas être déplacés. Faites attention.

1.1 Installation

Selon le HP officiel, vous pouvez installer conda ou pip.

conda install bokeh or pip install bokeh

1.2 Codage

Eh bien, j'aimerais le faire. Fondamentalement, il est publié dans le guide de l'utilisateur sur le site officiel.

1.2.1: Importer la bibliothèque

from bokeh.plotting import figure, output_file, show

C'est comme un sortilège magique. Il n'y a aucune perte à retenir.

Maintenant, faisons un graphique à partir du suivant.

1.2.2: Marqueurs de dispersion (scatter Markers)

Le premier est la vue d'ensemble du code. Cela ressemble à ce qui suit.

from bokeh.plotting import figure, output_file, show

#1
output_file('scatter.html') 
p = figure(plot_width=400, plot_height=400)

#2
p.circle([1,2,3,4,5], [6,7,2,4,5], size=20, color='navy', alpha=0.5)

#3
show(p)

Ensuite, vous verrez le graphique ci-dessous. scatterByBokeh (2).png

Regardons chacun d'eux.

** # 1: Créer un fichier html et définir la figure ** La sortie en bokeh semble être html, pas jpeg ou png. Donc c'est aussi comme un sort

output_file('xxx.html')

Comme (du moins je me souviens) de créer du HTML au fur et à mesure qu'il crée. Le p = figure suivant (plot_width = 400, plot_height = 400) , mais je comprends que c'est ** une opération pour créer un espace pour dessiner une figure **. Je comprends que c'est quelque chose comme fig = plt.figure (...) dans matplotlib.

** # 2: Ajoutez le contenu du diagramme de dispersion (cette fois le cercle) à p ** Ce qui suit est p.circle (...) , mais je comprends cela avec l'image d'ajouter son contenu à l'espace " p " créé ci-dessus. Cette fois, j'ai essayé de tracer avec 〇, donc j'utilise . Circle *.

Le contenu de () est "axe x", "axe y" et "méthode d'affichage" à partir de la gauche.

** # 3: Dessin ** Lorsque vous dessinez une figure, elle peut être affichée avec show (p) (_plt.show () _ dans matplotlib).

Je pense que les bases du bokeh ont été supprimées.

1.2.3 Graphique linéaire_

Ensuite, faisons un graphique linéaire (la méthode est presque la même).

from bokeh.plotting import figure, output_file, show

output_file('line.html')
p = figure(plot_width=400, plot_height=400)

p.line([1,2,3,4,5], [6,7,2,4,5], line_width=2)

show(p)

Le contenu est presque le même que celui du nuage de points. La seule différence est la partie "méthode d'affichage" de p.line (...) , où l'épaisseur de ligne (line_width) est spécifiée. Une fois affiché, il ressemblera à ce qui suit.

2020-05-25 (3).png

Dans cet article, j'ai présenté la manière rudimentaire d'écrire le bokeh, mais j'espère que tout le monde pourra faire l'expérience de la figurine mobile gluante en la déplaçant avec la souris. Personnellement, j'ai pensé que ce serait utile pour des présentations dynamiques (je pense que matplotlib et seaborn sont suffisants pour faire des matériaux ppt).

2. Qu'est-ce que l'intrigue?

Il semble qu'il existe des bibliothèques de visualisation gratuites et payantes fournies par plotly. Veuillez consulter le site officiel ci-dessous pour plus de détails.

2.1 Installation

Maintenant, installons complotement. Comme le bokeh, vous pouvez le faire avec pip ou conda.

pip install plotly conda install -c plotly plotly=4.7.1 (à partir du document officiel)

Faisons le! Cependant, il est nécessaire de concevoir une autre manière de l'exécuter avec jupyter notebook. Selon le HP officiel, afin d'utiliser complotement avec jupyter notebook

conda install "notebook>=5.3" "ipywidgets>=7.2"

Il faut faire. Dans le cas de jupyter lab

conda install jupyterlab "ipywidgets=7.5"

Il faut faire.

2.2: Codage

2.2.1: Importer la bibliothèque

import plotly.express as px

Tout d'abord, utilisons une bibliothèque appelée plotly.express.

2.2.3: Diagramme de dispersion

La vue d'ensemble du code est ci-dessous.

import plotly.express as px

x = [1,2,3,4,5]
y = [6,7,2,4,5]

fig = px.scatter(x=x, y=y)
fig.show()

Quand tu fais ça, newplot.png

Un diagramme comme celui-ci s'affiche. (Contrairement à la formule, les données sont les mêmes que celles utilisées dans le bokeh.) C'est très simple à utiliser, sans avoir besoin de l'expliquer (je pensais que c'était similaire à matplotlib).

La différence avec Matplotlib et Bokeh est que le nom de l'axe est répertorié même si le nom de l'axe (label) n'est pas spécifié.

Je n'ai pas spécifié la méthode d'affichage dans ce qui précède, je voudrais donc la combiner avec pandas.DataFrame et essayer divers paramètres également.

df = px.data.iris() #Définir les données d'iris comme trame de données

fig = px.scatter(df, x=df.sepal_length, y=df.sepal_width,
                 color=df.species, size=df.petal_length)

fig.show()

Ensuite, le graphique suivant sera généré. iris_plotting.png

Je lance px.sctter (...) dans la figure et fais divers réglages dans ().

1 2 3
dataframe Lire les données df
x= paramètres de l'axe des x(Les données+Réglage du nom de l'axe) df.sepal_length
y= réglage de l'axe y(Les données+Réglage du nom de l'axe) df.sepal_width
color= Paramètres de couleur(Le contenu de la colonne définie est reflété) df.species
size= Dimensionnement du cercle(Le contenu de la colonne définie est reflété) df.petal_length

Tout d'abord, jetons un coup d'œil aux données de Iris.

df.head()
sepal_length sepal_width petal_length petal_width species species_id
0 5.1 3.5 1.4 0.2 setosa 1
1 4.9 3.0 1.4 0.2 setosa 1
2 4.7 3.2 1.3 0.2 setosa 1
3 4.6 3.1 1.5 0.2 setosa 1
4 5.0 3.6 1.4 0.2 setosa 1

--df: Je lis une trame de données. --x =, y =: axe x, axe y sont définis. Le point à noter ici est que les données à l'intérieur sont spécifiées et que le nom de l'axe est également pris comme nom de colonne. --color =: Ici, nous classons en utilisant species. --size =: La taille du cercle est définie. Ici, petal_length est utilisé pour exprimer la taille du cercle.

Je pense que ce qui est intéressant à propos de l'intrigue, c'est que lorsque vous touchez les données sur le graphique avec le curseur de la souris, cela affichera ce qui est inclus dans les données. Je ne m'en occuperai pas cette fois, mais les données 3D sont très faciles à comprendre visuellement.

Cela fonctionne différemment de matplotlib et bokeh, il faut donc l'utiliser pour s'y habituer, mais c'est très intéressant.

finalement

――Cette fois, j'ai touché à deux bibliothèques de visualisation ―― Le bokeh et l'intrigue peuvent être exprimés de manière dynamique contrairement à matplotlib, c'est donc intéressant et polyvalent (je pense que chaque bibliothèque a ses avantages). ErsonPersonnellement, je voudrais approfondir ma compréhension de l'intrigue (je me demande si cela deviendra une arme puissante si je deviens compétent dans une certaine mesure ...).

c'est tout.

Recommended Posts

[Visualisation] J'ai essayé d'utiliser Bokeh / plotly! 【mémorandum】
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser Amazon Glacier
J'ai essayé d'utiliser git inspector
J'ai essayé d'utiliser AWS Chalice
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé d'utiliser Tensorboard, un outil de visualisation pour l'apprentissage automatique
J'ai essayé d'utiliser Rotrics Dex Arm # 2
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé de communiquer avec le client serveur en utilisant tmux
J'ai essayé l'apprentissage par renforcement avec PyBrain
J'ai essayé l'apprentissage en profondeur avec Theano
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré
J'ai essayé de photographier une vague de tortue en utilisant OpenPose
J'ai essayé d'utiliser l'API checkio
J'ai essayé le traitement asynchrone en utilisant asyncio
mémorandum complot
J'ai essayé d'utiliser Amazon SQS avec django-celery
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé de dessiner une ligne en utilisant une tortue
[Kaggle] J'ai essayé l'apprentissage d'ensemble avec LightGBM
J'ai essayé l'outil de visualisation OSS, sur-ensemble
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 2: J'ai essayé d'utiliser PyEZ
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé d'utiliser la recherche sélective comme R-CNN
J'ai essayé d'utiliser pipenv, alors prenez note
J'ai essayé d'utiliser l'API BigQuery Storage