Résumé de la méthode de dessin de base de Plotly Express, le standard de facto de la bibliothèque de dessins Python à l'ère Reiwa

en premier

plotly (1).png

Une bibliothèque appelée Plotly Express (site officiel) qui permet une opération interactive facile basée sur javascript a été publiée il y a quelque temps. J'ai trouvé. J'ai senti le potentiel d'une dimension clairement différente du dessin statique jusqu'à présent, j'ai donc résumé comment dessiner une méthode de visualisation de base dans un mémorandum. Pour référence, je le compare avec le modèle que j'ai écrit une figure similaire avec matplotlib + seaborn.

La «méthode de visualisation de base» est basée sur le «Comment sélectionner et dessiner la méthode de visualisation correcte dans l'analyse exploratoire des données».

Qu'est-ce que Plotly Express?

Plotly Express est un groupe d'API de haut niveau de complot publié en mars 2019. La fonctionnalité est que vous pouvez facilement écrire des dessins interactifs et complexes.

Site officiel: https://plot.ly/python/plotly-express/ API reference: https://www.plotly.express/plotly_express/#plotly_express.line Github (partie de plotly): https://github.com/plotly/plotly.py

Seaborn est un Wrapper pour écrire facilement Matplotlib, mais comparons Plotly Express et Seaborn pour voir lequel est le meilleur. Grossièrement

C'est une structure contrastée. (Référence) Résumé des bibliothèques de dessins dans l'étape 2018 organisée par Anaconda

Qu'est-ce que l'intrigue

Aperçu

plotly est un outil de visualisation de données open source et interactif. Outre Python, il peut être utilisé avec R et javascript. La version de plotly.py a été augmentée à 4 à partir du 11 janvier 2019. Licence MIT. Github: https://github.com/plotly/plotly.py

Jusqu'à plotly3, il semble que le graphe créé ait une odeur plus commerciale, comme être traité ou publié "en ligne" si vous ne faites pas attention. Le "mode hors ligne" est maintenant la valeur par défaut dans plotly4, élargissant ce que vous pouvez faire dans le cadre libre et le rendant plus facile à utiliser. Annonce de plotly 4.0.0: https://community.plot.ly/t/introducing-plotly-py-4-0-0/25639

(Référence) Groupe de produits plotly

** Gratuit ** plotly: Un module de visualisation qui peut être exploité de manière interactive basée sur JavaScript

** Payé (partiel) ** Chart Studio: un service créé en déconnectant le mode en ligne de plotly? Système de visualisation DASH: Vous pouvez créer des applications de tableau de bord avec Python ou R sans avoir besoin de connaissances en javascript.

Installation du module

En supposant que mac, jupyter lab est inclus Certains paramètres sont requis pour prendre en charge jupyter lab

pip install plotly

# Avoid "JavaScript heap out of memory" errors during extension installation
# (OS X/Linux)
export NODE_OPTIONS=--max-old-space-size=4096

# Jupyter widgets extension
jupyter labextension install @jupyter-widgets/[email protected] --no-build

# FigureWidget support
jupyter labextension install [email protected] --no-build

# and jupyterlab renderer support
jupyter labextension install [email protected] --no-build

# JupyterLab chart editor support (optional)
jupyter labextension install [email protected] --no-build

# Build extensions (must be done to activate extensions since --no-build is used above)
jupyter lab build

# Unset NODE_OPTIONS environment variable
# (OS X/Linux)
unset NODE_OPTIONS

Pour plus de détails, reportez-vous à la page d'installation sur le site officiel.

Importer la bibliothèque

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
import plotly.express as px
from plotly.subplots import make_subplots
import plotly.figure_factory as ff
import plotly.graph_objects as go
import plotly.io as pio
import japanize_matplotlib
import datetime
from matplotlib.dates import MonthLocator
from IPython.display import HTML

sns.set_style('darkgrid')
pio.templates.default = 'seaborn'
plt.rcParams['font.family'] = 'IPAexGothic'

%matplotlib inline
%config InlineBackend.figure_formats = {'png', 'retina'}

import matplotlib
import plotly
print(matplotlib.__version__) # 3.1.1
print(sns.__version__) # 0.9.0
print(plotly.__version__) # 4.2.1

#Utiliser le jeu de données iris
iris = sns.load_dataset('iris')
iris.head()
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

histogramme

matplotlib+seaborn

fig, axes = plt.subplots(ncols=2, figsize=(16, 4))
sns.distplot(iris['sepal_length'], bins=np.arange(4,8,0.25), kde=False, label='all', ax=axes[0])
sns.distplot(iris.query('species=="setosa"')['sepal_length'], kde=False,
             bins=np.arange(4,8,0.25), label='setosa', hist_kws={'alpha':0.3}, ax=axes[1])
sns.distplot(iris.query('species=="versicolor"')['sepal_length'], kde=False,
             bins=np.arange(4,8,0.25), label='versicolor', hist_kws={'alpha':0.3}, ax=axes[1])
sns.distplot(iris.query('species=="virginica"')['sepal_length'], kde=False,
             bins=np.arange(4,8,0.25), label='virginica', hist_kws={'alpha':0.3}, ax=axes[1])
axes[0].set_title("Histogramme de longueur de jauge(cm)")
axes[1].set_title("Un histogramme de la longueur de l'épée pour chaque variété(cm)")
axes[1].legend()
plt.show()
hist_seaborn.png

Plotly Express

#Vous ne pouvez pas spécifier explicitement la largeur du bac, mais changer la taille des nbins vous donnera une belle largeur.
#plotly express génère fig
#Si vous souhaitez stocker la figure dans des sous-graphiques, chaque fig.Vous pouvez récupérer et stocker la trace des données
#Cependant, si marginal est spécifié, la position de marginal s'effondrera, alors laissez-la pendant un moment.
fig = px.histogram(iris, x='sepal_length', color='species', 
                           nbins=19, range_x=[4,8], width=600, height=350,
                           opacity=0.4, marginal='box')
#plage lors du dessin de l'histogramme_Si y est spécifié, la position du dessin de la boîte à moustaches marginale sera altérée.
fig.update_layout(barmode='overlay')
fig.update_yaxes(range=[0,20],row=1, col=1)
#Enregistrer au format HTML
# fig.write_html('histogram_with_boxplot.html', auto_open=False)
fig.show()

newplot (3).png Cliquez ici pour un lien de travail: https://uchidehiroki.github.io/plotly_folders/Basic_Charts/histogram_with_boxplot_px.html

Lorsque vous passez votre souris, diverses informations apparaîtront. Le tracé marginal est facile à appliquer. Vous ne pouvez voir que la variété que vous souhaitez voir en double-cliquant sur l'élément à droite.

plotly Je vais dessiner en utilisant la fonction de corps intrigue

fig = make_subplots(rows=1, cols=2, subplot_titles=('La longueur de la pièce(cm)', '品種毎のLa longueur de la pièce(cm)'))
fig.add_trace(go.Histogram(x=iris['sepal_length'], xbins=dict(start=4,end=8,size=0.25), hovertemplate="%{x}cm: %{y}Pièces", name="Toutes les variétés"), row=1, col=1)
for species in ['setosa', 'versicolor', 'virginica']:
    fig.add_trace(go.Histogram(x=iris.query(f'species=="{species}"')['sepal_length'],
                           xbins=dict(start=4,end=8,size=0.25), hovertemplate="%{x}cm: %{y}Pièces", name=species), row=1, col=2)
fig.update_layout(barmode='overlay', height=400, width=900)
fig.update_traces(opacity=0.3, row=1, col=2)
fig.update_xaxes(tickvals=np.arange(4,8,0.5), title_text='sepal_length')
fig.update_yaxes(title_text='la fréquence')
fig.write_html('../output/histogram_with_boxplot_plotly.html', auto_open=False)
fig.show()

newplot (4).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/histogram_with_boxplot_plotly.html

Boîte à moustaches

matplotlib+seaborn

fig, ax = plt.subplots(figsize=(8,3))
sns.boxplot(x='sepal_length', y='species', data=iris, order=('setosa', 'versicolor', 'virginica'), ax=ax)
ax.set_title('Boîte à moustaches avec la longueur des morceaux pour chaque variété(cm)')
plt.show()

image.png

Plotly Express

fig = px.box(iris, y='species', x='sepal_length', color='species', orientation='h',
       category_orders={'species': ['setosa', 'versicolor', 'virginica']}, 
       title='Boîte à moustaches avec la longueur des morceaux pour chaque variété(cm)', width=600, height=400)
fig.update_layout(showlegend=False)
fig.write_html('../output/boxplot_px.html', auto_open=False)
fig.show()

newplot (21).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/boxplot_px.html Par exemple, si vous placez le curseur sur un point avec une valeur aberrante, des informations s'afficheront. Ce n'est pas beau que chaque variété ne soit pas sur la ligne horizontale ...

plotly

fig = go.Figure()
for species in iris['species'].unique():
    fig.add_trace(go.Box(x=iris.query(f'species=="{species}"')['sepal_length'], name=species))
fig.update_layout(height=300, width=600, showlegend=False, title_text='Boîte à moustaches avec la longueur des morceaux pour chaque variété(cm)')
fig.update_xaxes(title_text='sepal_length')
fig.write_html('../output/boxplot_plotly.html', auto_open=False)
fig.show()

newplot (5).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/boxplot_plotly.html Ceci est une figure de barbe sur la ligne correctement

graphique à barres

matplotlib + seaborn

fig, ax = plt.subplots(figsize=(8,3))
sns.barplot(x='sepal_length', y='species', order=['setosa', 'versicolor', 'virginica'], ci='sd', data=iris, ax=ax)
ax.set_title('Longueur moyenne des chutes pour chaque variété(cm)')
plt.show()

image.png Plotly Express

#Contrairement à Seaborn, Plotly ne calcule pas les longueurs moyennes ou les écarts types.
agg_iris = iris.groupby(['species'])[['sepal_length']].agg([np.mean, np.std, 'count']).reset_index()
agg_iris.columns = ['species', 'sepal_length', 'std', 'count']
fig = px.bar(agg_iris, x='sepal_length', y='species', color='species', category_orders={'species': ['setosa', 'versicolor', 'virginica']}, 
       error_x='std', orientation='h', hover_data=['count'], height=300, width=600, title='Longueur moyenne des chutes pour chaque variété(cm)')
fig.update_layout(showlegend=False)
fig.write_html('../output/barplot_px.html', auto_open=False)
fig.show()

newplot (6).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/barplot_px.html

(Référence) ggplot Si vous souhaitez utiliser la facette pour voir

Utile lorsqu'il y a plusieurs axes de comparaison

tips = px.data.tips()
fig = px.histogram(tips, x="sex", y="tip", histfunc="avg", color="smoker", barmode="group",
             facet_row="time", facet_col="day", category_orders={"day": ["Thur", "Fri", "Sat", "Sun"],
                                                                "time": ["Lunch", "Dinner"]},
                  height=400, width=800)
fig.write_html('../output/boxplot_with_facet_px.html', auto_open=False)
fig.show()

newplot (7).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/boxplot_with_facet_px.html

Graphique à barres empilées

Prétraitement

iris['sepal_length_rank'] = pd.cut(iris['sepal_length'], [4,5,7,8], labels=['short', 'medium', 'long'])
agg_iris = iris.groupby(['sepal_length_rank','species']).size().reset_index()
agg_iris.columns = ['sepal_length_rank', 'species', 'count']
pivot_iris = agg_iris.pivot(index='sepal_length_rank', columns='species', values='count')

matplotlib+~~seaborn~~Pandas Plot

#empilé à Seaborn=Puisqu'il n'y a pas de fonction qui correspond à True, écrivez-la avec un tracé Pandas
fig, ax = plt.subplots(figsize=(8,3))
pivot_iris.plot.barh(y=pivot_iris.columns, stacked=True, ax=ax)
ax.set_title('Répartition de la fréquence et de la variété pour chaque rang de la longueur de la pièce')
ax.set_xlabel('la fréquence')
ax.set_ylabel('Rang de la longueur de la pièce')
plt.show()

image.png

Plotly Express

fig = px.bar(agg_iris, y='sepal_length_rank', x='count', color='species', orientation='h', barmode='relative',
      height=300, width=600, title='Répartition de la fréquence et de la variété pour chaque rang de la longueur de la pièce')
fig.update_xaxes(title_text='la fréquence')
fig.update_yaxes(title_text='Rang de la longueur de la pièce')
fig.write_html('../output/stacked_barplot_px.html', auto_open=False)
fig

newplot (8).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/stacked_barplot_px.html Vous pouvez sélectionner n'importe quel élément et l'empiler

Nuage de points

matplotlib + seaborn

#Lorsque vous voulez voir la corrélation entre deux variables
fig, ax = plt.subplots(figsize=(6,4))
sns.scatterplot(x='sepal_length', y='petal_length', hue='species', data=iris, ax=ax)
ax.legend(loc='lower right')
ax.set_title('Diagramme de dispersion de la longueur des débris et de la longueur des pétales(cm)')
ax.set_xlabel('La longueur de la pièce(cm)')
ax.set_ylabel('Longueur des pétales(cm)')
plt.show()

image.png

#Lorsque vous souhaitez voir la corrélation de plusieurs variables
g = sns.pairplot(iris, hue='species')
plt.subplots_adjust(top=0.95)
g.fig.suptitle('Matrice de diagramme de dispersion pour chaque variété')
g.fig.set_size_inches(8,6)

image.png Plotly Express

fig = px.scatter(px.data.iris(), x='sepal_length', y='petal_length', color='species', symbol='species', 
                 marginal_x='box', marginal_y='histogram', trendline='ols',
           hover_data=['species_id'], width=800, height=600, title='Diagramme de dispersion de la longueur des débris et de la longueur des pétales(cm)')
#Si la plage n'est pas spécifiée individuellement, pas en dispersion, elle sera reflétée dans la figure marginale et la figure marginale ne sera pas visible.
fig.update_xaxes(title_text='La longueur de la pièce(cm)', range=[4,8], row=1, col=1)
fig.update_yaxes(title_text='Longueur des pétales(cm)', range=[0.5,8], row=1, col=1)
fig.write_html('../output/scatterplot_px.html', auto_open=False)
fig.show()

newplot (9).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/scatterplot_px.html

fig = px.scatter_matrix(iris, dimensions=['sepal_length','sepal_width','petal_length','petal_width'],
                 color='species', size_max=1, title='Matrice de diagramme de dispersion pour chaque variété', width=800,height=600)
fig.write_html('../output/scattermatrix_px.html', auto_open=False)
fig

newplot (10).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/scattermatrix_px.html Si vous utilisez l'outil de corde de lancer en haut à droite pour inclure des données, seules les données correspondant à ces données seront mises en évidence dans toutes les figures. Si vous activez "Toggle Spike Lines", cela vous donnera des lignes auxiliaires pour les coordonnées x et y.

(Référence) Coordonnées parallèles

S'il y a trop de variables, il vaut mieux utiliser des coordonnées parallèles que de regarder la matrice du diagramme de dispersion

#Le réarrangement des axes peut être opéré de manière interactive, c'est dangereux
#Le filtrage est également possible pour chaque axe, et la largeur affichée peut être ajustée en cliquant sur la valeur de l'axe.
#Plutôt que de regarder chaque corrélation avec une matrice de diagramme de dispersion, il semble préférable de regarder cette coordonnée d'équilibre car plusieurs axes peuvent être considérés.
fig = px.parallel_coordinates(px.data.iris(), 
                              color='species_id', 
                              dimensions=['sepal_length','sepal_width','petal_length','petal_width', 'species_id'],
                              color_continuous_scale=px.colors.diverging.Portland,
                             height=400, width=800)
fig.write_html('../output/parallel_coordinates_px.html', auto_open=False)
fig.show()

newplot (11).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/parallel_coordinates_px.html Vous pouvez réorganiser les axes Si vous sélectionnez une valeur dans l'axe, elle sera filtrée uniquement sur les données qui passent par cette valeur.

#Si la variable catégorielle est sur l'axe, vous pouvez le faire comme ceci
fig = px.parallel_categories(iris, dimensions=['species', 'sepal_length_rank'], color='sepal_length',
                             labels={'species': 'Variété Ayame', 'sepal_length_rank': 'Niveau de longueur des débris'},
                            height=400, width=600)
fig.write_html('../output/parallel_categories_px.html', auto_open=False)
fig.show()

newplot (12).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/parallel_categories_px.html

Carte de chaleur

Prétraitement

flights = sns.load_dataset("flights")
#Tableau croisé
crossed_flights = pd.pivot_table(flights, values="passengers", index="month", columns="year", aggfunc=np.mean)  
# pd.crosstab(flights["month"], flights["year"], values=flights["passengers"], aggfunc=np.mean)Mais oui

matplotlib+seaborn

#Carte de chaleur
fig, ax = plt.subplots(figsize=(8,6))
sns.heatmap(crossed_flights,annot=True, cmap="Oranges", fmt='.5g', ax=ax)
ax.set_title('Carte thermique du nombre de passagers');

image.png D'une manière ou d'une autre, les chiffres sortent du cadre ... Cela ne s'est pas produit dans le passé, mais c'est un mystère.

Plotly Express Puisqu'il n'y avait pas de fonction correspondante dans Plotly Express, nous utiliserons la fonction de plotly elle-même plotly

fig = go.Figure()
fig.add_trace(go.Heatmap(z=crossed_flights, x=crossed_flights.columns, y=crossed_flights.index,
                        hovertemplate='%{x}-%{y}: %{z} passengers', colorscale='Oranges'))
fig.update_layout(height=400, width=600, title_text='Carte thermique du nombre de passagers(Avec survol et sans annoter)')
fig.write_html('../output/heatmap_px.html', auto_open=False)
fig.show()

newplot (13).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/heatmap_px.html

#La carte de chaleur est plus facile à voir lorsque le survol est désactivé.
fig = ff.create_annotated_heatmap(z=crossed_flights.values, x=list(crossed_flights.columns),
                                  y=list(crossed_flights.index), colorscale='Oranges',
                                  hoverinfo='none')
fig.update_layout(height=400, width=600, showlegend=False, title_text='Carte thermique du nombre de passagers(Sans survol Avec annoter)')
fig.write_html('../output/heatmap_with_annotate_px.html', auto_open=False)
fig

newplot (14).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/heatmap_with_annotate_px.html

Graphique linéaire

Prétraitement

#Préparer une colonne de type datetime
datetimes = []
for i, j in enumerate(flights.itertuples()):
    datetimes.append(datetime.datetime.strptime(f'{j[1]}-{j[2]}', '%Y-%B'))
flights['datetime'] = datetimes

matplotlib+seaborn

fig, ax = plt.subplots(figsize=(12, 4))
sns.lineplot(x='datetime', y='passengers', data=flights, ax=ax)
ax.xaxis.set_major_locator(MonthLocator(interval=6))
ax.tick_params(labelrotation=45)
ax.set_xlim(datetime.datetime(1949,1,1,0,0,0),datetime.datetime(1961,1,1,0,0,0))
ax.set_title('Graphique de la ligne de rupture de l'évolution du nombre de passagers(Mensuel)')
plt.show()

image.png

Plotly Express

fig = px.line(flights, x='datetime', y='passengers', 
              height=400, width=800, title='Graphique de la ligne de rupture de l'évolution du nombre de passagers(Mensuel)')
fig.update_layout(xaxis_range=['1949-01-01', '1961-01-01'], # datetime.Peut être spécifié par datetime
                 xaxis_rangeslider_visible=True)
fig.update_xaxes(tickformat='%Y-%m', tickangle=45)
fig.write_html('../output/lineplot_px.html', auto_open=False)
fig.show()

newplot (15).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/lineplot_px.html Vous pouvez vérifier le graphique linéaire dans la plage spécifiée par le curseur ci-dessous. Lorsque vous comparez plusieurs graphiques linéaires, vous ne pouvez sélectionner que les éléments que vous souhaitez comparer ultérieurement.

Autres graphiques intéressants

Je regardais https://plot.ly/python/plotly-express/ et ai arrangé quelques chiffres intéressants.

Polar Coordinates Dans le graphique à barres, vous ne pouviez comparer que la longueur de la variable univariée, mais il semble que vous puissiez l'utiliser lorsque vous souhaitez comparer les scores sur plusieurs axes tels que les résultats de test.

melted_iris = iris.melt(id_vars=['species'], value_vars=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'],
                       var_name='variable', value_name='value')
melted_iris = melted_iris.groupby(['species', 'variable']).mean().reset_index()
fig = px.line_polar(melted_iris, r='value', theta='variable', color='species', line_close=True,
                   height=500, width=500, title='Longueur et largeur des éclats et des pétales pour chaque variété Ayame')
fig.write_html('../output/line_polar_px.html', auto_open=False)
fig.show()

newplot (16).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/line_polar_px.html Surtout la forme de la fleur de setosa semble être différente

Distribution

fig = make_subplots(rows=1, cols=2, subplot_titles=('La longueur de la pièce(cm)', '品種毎のLa longueur de la pièce(cm)'))
fig.add_trace(px.density_contour(iris, x="sepal_width", y="sepal_length").data[0],row=1, col=1)
fig2 = px.density_contour(iris, x="sepal_width", y="sepal_length", color='species')
[fig.add_trace(fig2.data[i], row=1, col=2) for i in range(len(fig2.data))] #Stocker toutes les traces fig2 sur fig
fig.write_html('../output/densityplot_px.html', auto_open=False)
fig.show()

newplot (17).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/densityplot_px.html Cool Vous pouvez voir avec la souris la hauteur de chaque courbe de niveau

animation

gapminder = px.data.gapminder()
fig = px.scatter(gapminder, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
           size="pop", color="continent", hover_name="country", facet_col="continent",
           log_x=True, size_max=45, range_x=[100,100000], range_y=[25,90])
fig.write_html('../output/scatter_animation_px.html', auto_open=False)
fig.show()

newplot (22).png

https://uchidehiroki.github.io/plotly_folders/Basic_Charts/scatter_animation_px.html Je pense que c'est intéressant lorsque vous cliquez sur l'URL et que vous la déplacez réellement

Commentaire général

Je vais résumer les résultats de la comparaison de Plotly Express et seaborn (matplotlib) avec un jugement arbitraire et des préjugés ◎: Utilisation recommandée ○: pas de problème particulier △: insatisfait ×: Aucune implémentation

Graphique Plotly Express matplotlib
seaborn
Raison
histogramme Seaborn suffit, mais c'est un avantage de pouvoir sélectionner et voir uniquement la distribution des variétés que vous souhaitez voir
C'est aussi un point que vous n'avez pas à répéter le même code pour chaque type de produit
Boîte à moustaches Il n'y a pas assez d'informations pour sélectionner une variété spécifique et l'ajouter en survolant
Avec Plotly Express, la silhouette s'effondre un peu
Si vous êtes intéressé, vous pouvez utiliser l'unité principale Plotly pour le moment.
graphique à barres ○(※◎) seaborn calculera la moyenne et l'écart type, mais Plotly Express doit être calculé à l'avance.
(※2つ以上の軸でgraphique à barresを作りたい場合はfacetが使えるPlotly Express一択)
Graphique à barres empilées × Plotly Express peut modifier les éléments à empiler plus tard
seabornはGraphique à barres empiléesの機能がない
Nuage de points Vous pouvez mettre une ligne de régression pour chaque groupe
Vous pouvez vérifier les méta-informations telles que l'inclinaison de la ligne de régression avec le survol.
Tracé marginal facile à incorporer
Nuage de pointsの特定の箇所を拡大縮小出来る
Vous pouvez survoler des méta-informations telles que les numéros d'identification de données individuelles
Nuage de points行列においてある図の特定のデータを指定すると他の図全てで同じデータのみを強調してくれる
Lorsque les données sont regroupées, un groupe spécifique peut être sélectionné et dessiné.
Coordonnées parallèles ? Prend en charge les variables catégorielles qui vous permettent de trier les axes et de filtrer par axes spécifiques
Coordonnées parallèlesは描画後に色々試行錯誤することで真の威力を発揮する
Carte de chaleur Si vous n'avez pas besoin de survoler des informations supplémentaires, seaborn suffira
Cela devrait être, mais la figure de Seaborn s'est effondrée parce que l'environnement à portée de main est mauvais
Graphique linéaire Vous pouvez connaître intuitivement la position des coordonnées même à des points éloignés de l'axe x et de l'axe y avec bascule.
Vous pouvez dessiner n'importe quelle plage avec le curseur
Lorsqu'il y a plusieurs lignes de pliage(Par exemple, les tendances démographiques dans 47 préfectures, etc.), Vous pouvez sélectionner et tracer la préfecture que vous souhaitez comparer

La victoire écrasante de Plotly Express Il y avait de nombreux autres dessins tels que des graphiques radar, des distributions de densité et des animations qui seraient intéressants s'ils étaient bien utilisés. De plus, si vous pouvez maîtriser Slider, ce sera très cool. https://plot.ly/python/sliders/ newplot (20).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/histogram_with_slider.html

(À part 1) Points à noter lors de l'utilisation de Plotly Express

Depuis kazutan.R

C'est plus gênant que le fichier image, mais il semble plus facile de s'y référer après avoir placé le fichier html localement ou l'avoir hébergé en ligne. Il est préférable d'héberger en ligne, en particulier lors du partage avec plusieurs personnes

(A part 2) Comment se référer au fichier html plus tard

Par rapport aux fichiers image png et jpeg, il faut un petit truc pour afficher le fichier html. ** Lors de l'affichage hors ligne ** Vous pouvez dessiner en spécifiant le chemin du fichier html

** Lors de l'affichage en ligne ** style tracé: utilisez chart_studio Vous pouvez dessiner en hébergeant le fichier html sur le serveur de plotly et en référençant l'URL publiée Cependant, si vous avez un compte gratuit, vous ne pouvez pas émettre de lien secret ou l'héberger dans un environnement privé (plutôt, y gagner de l'argent de manière intrigue). L'hôte public du fichier html prend également en charge jusqu'à 100 au total.

Utilisez donc les pages github. Placez le fichier html dans le référentiel github, sélectionnez «branche principale» dans «Paramètres» → «Pages GitHub» → «Source», et appuyez sur le bouton «Enregistrer». あとは、username.github.io/path/to/html/filesにアクセスすればOKです Il est facile de gérer les fichiers html car c'est github. Site officiel: https://pages.github.com/ Référence: https://www.tam-tam.co.jp/tipsnote/html_css/post11245.html

Il semble que les pages Github elles-mêmes puissent être publiées même dans un référentiel privé. Si vous analysez avec des données que vous ne souhaitez pas publier au public, il semble bon d'enregistrer le fichier HTML de dessin dans un référentiel privé et de ne partager que l'URL.

(À part 3) Reportez-vous au fichier HTML dans jupyter lab

#Vous pouvez vous référer au fichier html et l'intégrer
HTML(filename='../output/histogram_with_boxplot_px.html')
#Vous pouvez également vous référer au code HTML statique que vous mettez en ligne
HTML(url='https://uchidehiroki.github.io/plotly_folders/Basic_Charts/barplot_px.html')

À la fin

J'étais un artiste marin, mais maintenant je n'ai plus besoin de m'en servir beaucoup. Je suis un peu seul, mais je vais suivre le rythme. J'espère que le nombre d'utilisateurs de Plotly Express augmentera. Cela fait longtemps, mais merci pour votre relation.

Recommended Posts

Résumé de la méthode de dessin de base de Plotly Express, le standard de facto de la bibliothèque de dessins Python à l'ère Reiwa
Récapitulatif des versions de la bibliothèque Python standard qui sont désormais validées par le serveur sur https
Résumé du flux de base de l'apprentissage automatique avec Python
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
Comment déboguer une bibliothèque Python standard dans Visual Studio
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Envelopper (partie de) la bibliothèque AtCoder en Cython pour une utilisation en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
[Parlez de la structure de dessin de plotly] Visualisation dynamique avec plotly [python]
Comparer la grammaire de base de Python et Go d'une manière facile à comprendre
Vérifiez le comportement du destroyer en Python
Résumé de diverses instructions for en Python
Le résultat de l'installation de python sur Anaconda
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Principes de base pour exécuter NoxPlayer en Python
Résumé des méthodes intégrées, etc. de la liste Python
À la recherche du FizzBuzz le plus rapide en Python
Cours de base Python (à la fin de 15)
Vous pouvez appeler la méthode de la classe directement dans Python3 sans ajouter @staticmethod
En Python, changez le comportement de la méthode en fonction de la façon dont elle est appelée