Zusammenfassung der grundlegenden Zeichenmethode von Plotly Express, dem De-facto-Standard der Python-Zeichenbibliothek in der Reiwa-Ära

zunaechst

plotly (1).png

Vor einiger Zeit wurde eine Bibliothek namens Plotly Express (offizielle Website) veröffentlicht, die eine einfache interaktive Bedienung auf der Basis von Javascript ermöglicht. Ich fand. Ich fühlte das Potenzial einer Dimension, die sich deutlich von der bisherigen statischen Zeichnung unterscheidet, und fasste zusammen, wie man eine grundlegende Visualisierungsmethode als Memorandum zeichnet. Als Referenz vergleiche ich es mit dem Muster, dass ich eine ähnliche Figur mit matplotlib + seaborn geschrieben habe.

Die "grundlegende Visualisierungsmethode" basiert auf der zuvor geschriebenen "Auswählen und Zeichnen der richtigen Visualisierungsmethode in der explorativen Datenanalyse".

Was ist Plotly Express?

Plotly Express ist eine Gruppe von High-Level-APIs, die im März 2019 veröffentlicht wurden. Die Funktion ist, dass Sie einfach interaktive und komplizierte Zeichnungen schreiben können.

Offizielle Website: https://plot.ly/python/plotly-express/ API reference: https://www.plotly.express/plotly_express/#plotly_express.line Github (Teil von plotly): https://github.com/plotly/plotly.py

Seaborn ist ein Wrapper zum einfachen Schreiben von Matplotlib, aber vergleichen wir Plotly Express und Seaborn, um herauszufinden, was besser ist. Grob

Es ist eine kontrastierende Struktur. (Referenz) Zusammenfassung der von Anaconda organisierten Zeichnungsbibliotheken im Jahr 2018

Was ist plott

Überblick

plotly ist ein Open Source- und interaktives Datenvisualisierungstool. Neben Python kann es mit R und Javascript verwendet werden. Die Version von plotly.py wurde ab dem 11. Januar 2019 auf 4 erhöht. MIT-Lizenz. Github: https://github.com/plotly/plotly.py

Bis zu plotly3 scheint das erstellte Diagramm einen kommerzielleren Geruch zu haben, z. B. "online" verarbeitet oder veröffentlicht zu werden, wenn Sie nicht vorsichtig waren. "Offline-Modus" ist jetzt die Standardeinstellung in plotly4, wodurch die Möglichkeiten innerhalb des freien Frames erweitert und die Verwendung vereinfacht werden. Ankündigung von plotly 4.0.0: https://community.plot.ly/t/introducing-plotly-py-4-0-0/25639

(Referenz-) Plot-Produktgruppe

** Frei ** plotly: Ein Visualisierungsmodul, das interaktiv mit Javascript betrieben werden kann

** Bezahlt (teilweise) ** Chart Studio: Ein Dienst, der durch Trennen des Online-Modus von plotly erstellt wurde? Visualisierungssystem DASH: Sie können Dashboard-Apps mit Python oder R erstellen, ohne Kenntnisse in Javascript zu benötigen.

Modulinstallation

Angenommen, Mac, Jupyter Lab ist enthalten Einige Einstellungen sind erforderlich, um jupyter lab zu unterstützen

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

Weitere Informationen finden Sie auf der Installationsseite der offiziellen Website.

Bibliothek importieren

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

#Verwenden Sie den Iris-Datensatz
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

Histogramm

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("Messlängenhistogramm(cm)")
axes[1].set_title("Ein Histogramm der Länge des Schwertes für jede Sorte(cm)")
axes[1].legend()
plt.show()
hist_seaborn.png

Plotly Express

#Sie können die Breite des Bin nicht explizit angeben, aber wenn Sie die Größe der nbins ändern, erhalten Sie eine schöne Breite.
#Plotly Express erzeugt Abb
#Wenn Sie die Figur in Unterplots speichern möchten, wird jede Figur.Sie können Trace von Daten abrufen und speichern
#Wenn jedoch marginal angegeben ist, wird die Position von marginal zusammenbrechen. Lassen Sie sie daher eine Weile stehen.
fig = px.histogram(iris, x='sepal_length', color='species', 
                           nbins=19, range_x=[4,8], width=600, height=350,
                           opacity=0.4, marginal='box')
#Bereich beim Zeichnen des Histogramms_Wenn y angegeben ist, wird die Zeichenposition des Randfelddiagramms beschädigt.
fig.update_layout(barmode='overlay')
fig.update_yaxes(range=[0,20],row=1, col=1)
#Als HTML speichern
# fig.write_html('histogram_with_boxplot.html', auto_open=False)
fig.show()

newplot (3).png Klicken Sie hier für einen funktionierenden Link: https://uchidehiroki.github.io/plotly_folders/Basic_Charts/histogram_with_boxplot_px.html

Wenn Sie mit der Maus darüber fahren, werden verschiedene Informationen angezeigt. Randdiagramm ist einfach anzuwenden. Sie können nur die Sorte sehen, die Sie sehen möchten, indem Sie auf den Artikel rechts doppelklicken.

plotly Ich werde mit der Funktion des Handlungskörpers zeichnen

fig = make_subplots(rows=1, cols=2, subplot_titles=('Die Länge des Stückes(cm)', '品種毎のDie Länge des Stückes(cm)'))
fig.add_trace(go.Histogram(x=iris['sepal_length'], xbins=dict(start=4,end=8,size=0.25), hovertemplate="%{x}cm: %{y}Stücke", name="Alle Sorten"), 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}Stücke", 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='Frequenz')
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

Box Whisker

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('Box Whisker mit der Länge der Stücke für jede Sorte(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='Box Whisker mit der Länge der Stücke für jede Sorte(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 Wenn Sie beispielsweise den Cursor auf einen Punkt mit einem Ausreißer setzen, werden Informationen angezeigt. Es ist nicht schön, dass nicht jede Sorte auf die horizontale Linie kommt ...

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='Box Whisker mit der Länge der Stücke für jede Sorte(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 Dies ist eine Box Bart Figur auf der Linie richtig

Balkendiagramm

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('Durchschnittliche Länge der Abfälle für jede Sorte(cm)')
plt.show()

image.png Plotly Express

#Im Gegensatz zu Seaborn berechnet Plotly keine Durchschnittslängen oder Standardabweichungen.
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='Durchschnittliche Länge der Abfälle für jede Sorte(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

(Referenz) ggplot Wenn Sie die Facette verwenden möchten, um zu sehen

Nützlich, wenn mehrere Vergleichsachsen vorhanden sind

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

Gestapeltes Balkendiagramm

Vorverarbeitung

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

#zu Seegeborenen gestapelt=Da es keine Funktion gibt, die True entspricht, schreiben Sie sie mit Pandas Plot
fig, ax = plt.subplots(figsize=(8,3))
pivot_iris.plot.barh(y=pivot_iris.columns, stacked=True, ax=ax)
ax.set_title('Aufschlüsselung nach Häufigkeit und Sorte für jeden Rang der Länge des Stücks')
ax.set_xlabel('Frequenz')
ax.set_ylabel('Rang der Länge des Stückes')
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='Aufschlüsselung nach Häufigkeit und Sorte für jeden Rang der Länge des Stücks')
fig.update_xaxes(title_text='Frequenz')
fig.update_yaxes(title_text='Rang der Länge des Stückes')
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 Sie können jedes Element auswählen und stapeln

Streudiagramm

matplotlib + seaborn

#Wenn Sie die Korrelation zwischen zwei Variablen sehen möchten
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('Streudiagramm der Länge der Trümmer und der Länge der Blütenblätter(cm)')
ax.set_xlabel('Die Länge des Stückes(cm)')
ax.set_ylabel('Blütenblattlänge(cm)')
plt.show()

image.png

#Wenn Sie die Korrelation mehrerer Variablen sehen möchten
g = sns.pairplot(iris, hue='species')
plt.subplots_adjust(top=0.95)
g.fig.suptitle('Streudiagrammmatrix für jede Sorte')
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='Streudiagramm der Länge der Trümmer und der Länge der Blütenblätter(cm)')
#Wenn der Bereich nicht einzeln angegeben wird, nicht in Streuung, wird er in der Randfigur wiedergegeben und die Randfigur ist nicht sichtbar.
fig.update_xaxes(title_text='Die Länge des Stückes(cm)', range=[4,8], row=1, col=1)
fig.update_yaxes(title_text='Blütenblattlänge(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='Streudiagrammmatrix für jede Sorte', 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 Wenn Sie das Wurfseilwerkzeug oben rechts verwenden, um einige Daten einzuschließen, werden in allen Abbildungen nur die Daten hervorgehoben, die diesen Daten entsprechen. Wenn Sie "Spike Lines umschalten" aktivieren, erhalten Sie Hilfslinien für x- und y-Koordinaten.

(Referenz) Parallele Koordinaten

Wenn zu viele Variablen vorhanden sind, ist es besser, parallele Koordinaten zu verwenden, als die Streudiagrammmatrix zu betrachten

#Die Achsenumlagerung kann interaktiv betrieben werden, dies ist gefährlich
#Das Filtern ist auch für jede Achse möglich, und die angezeigte Breite kann durch Klicken auf den Wert der Achse angepasst werden.
#Anstatt jede Korrelation mit einer Streudiagrammmatrix zu betrachten, scheint es besser, diese Gleichgewichtskoordinate zu betrachten, da mehrere Achsen berücksichtigt werden können.
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 Sie können die Achsen neu anordnen Wenn Sie einen Wert in der Achse auswählen, wird dieser nur nach den Daten gefiltert, die diesen Wert durchlaufen.

#Wenn sich die kategoriale Variable auf der Achse befindet, können Sie dies folgendermaßen tun
fig = px.parallel_categories(iris, dimensions=['species', 'sepal_length_rank'], color='sepal_length',
                             labels={'species': 'Ayame Sorte', 'sepal_length_rank': 'Trümmerlängengrad'},
                            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

Wärmekarte

Vorverarbeitung

flights = sns.load_dataset("flights")
#Kreuztabelle
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)Aber ja

matplotlib+seaborn

#Wärmekarte
fig, ax = plt.subplots(figsize=(8,6))
sns.heatmap(crossed_flights,annot=True, cmap="Oranges", fmt='.5g', ax=ax)
ax.set_title('Heatmap der Passagierzahlen');

image.png Irgendwie gehen die Zahlen aus dem Rahmen ... Es ist in der Vergangenheit nicht passiert, aber es ist ein Rätsel.

Plotly Express Da es in Plotly Express keine entsprechende Funktion gab, werden wir die Funktion von plotly selbst verwenden 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='Heatmap der Passagierzahlen(Mit Schwebeflug und ohne Anmerkungen)')
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

#Die Heatmap ist leichter zu erkennen, wenn der Hover ausgeschaltet ist.
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='Heatmap der Passagierzahlen(Ohne Hover Mit Annotieren)')
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

Liniendiagramm

Vorverarbeitung

#Bereiten Sie eine Spalte vom Typ datetime vor
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('Break-Line-Diagramm der Änderungen in der Anzahl der Passagiere(Monatlich)')
plt.show()

image.png

Plotly Express

fig = px.line(flights, x='datetime', y='passengers', 
              height=400, width=800, title='Break-Line-Diagramm der Änderungen in der Anzahl der Passagiere(Monatlich)')
fig.update_layout(xaxis_range=['1949-01-01', '1961-01-01'], # datetime.Kann durch Datum / Uhrzeit angegeben werden
                 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 Sie können das Liniendiagramm in dem durch den Schieberegler unten angegebenen Bereich überprüfen. Beim Vergleichen mehrerer Liniendiagramme können Sie nur die Elemente auswählen, die Sie später vergleichen möchten.

Andere interessante Grafiken

Ich habe mir https://plot.ly/python/plotly-express/ angesehen und einige interessante Zahlen zusammengestellt.

Polar Coordinates Das Balkendiagramm konnte nur die Länge eines Univariaten vergleichen, aber es scheint, dass es verwendet werden kann, wenn Sie Ergebnisse auf mehreren Achsen vergleichen möchten, z. B. Testergebnisse.

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='Länge und Breite der Splitter und Blütenblätter für jede Ayame-Sorte')
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 Besonders die Form der Setosa-Blume scheint anders zu sein

Verteilung

fig = make_subplots(rows=1, cols=2, subplot_titles=('Die Länge des Stückes(cm)', '品種毎のDie Länge des Stückes(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))] #Bewahren Sie alle Spuren von Abb. 2 in Abb
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 Sie können mit der Maus sehen, wie hoch jede Konturlinie ist

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 Ich finde das interessant, wenn Sie auf die URL klicken und sie tatsächlich verschieben

Allgemeiner Kommentar

Ich werde die Ergebnisse des Vergleichs von Plotly Express und Seaborn (Matplotlib) mit willkürlichem Urteilsvermögen und Vorurteilen zusammenfassen ◎: Zur Verwendung empfohlen ○: Kein besonderes Problem △: Unzufrieden ×: Keine Implementierung

Graph Plotly Express matplotlib
seaborn
Grund
Histogramm Seaborn ist genug, aber es ist ein Vorteil, dass Sie nur die Verteilung der Sorten auswählen und sehen können, die Sie sehen möchten
Es ist auch ein Punkt, dass Sie nicht für jeden Produkttyp den gleichen Code wiederholen müssen
Box Whisker Es gibt nicht genügend Informationen, um eine bestimmte Sorte auszuwählen und durch Bewegen des Mauszeigers hinzuzufügen
Mit Plotly Express kollabiert die Figur ein wenig
Wenn Sie interessiert sind, können Sie vorerst das Plotly-Hauptgerät verwenden.
Balkendiagramm ○(※◎) Seaborn berechnet den Mittelwert und die Standardabweichung, Plotly Express muss jedoch im Voraus berechnet werden.
(※2つ以上の軸でBalkendiagrammを作りたい場合はfacetが使えるPlotly Express一択)
Gestapeltes Balkendiagramm × Plotly Express kann die Elemente ändern, die später gestapelt werden sollen
seabornはGestapeltes Balkendiagrammの機能がない
Streudiagramm Sie können für jede Gruppe eine Regressionslinie festlegen
Sie können Metainformationen wie die Neigung der Regressionslinie mit dem Hover überprüfen.
Einfach zu integrierende Randhandlung
Streudiagrammの特定の箇所を拡大縮小出来る
Sie können Metainformationen wie Identifikationsnummern einzelner Daten bewegen
Streudiagramm行列においてある図の特定のデータを指定すると他の図全てで同じデータのみを強調してくれる
Wenn Daten gruppiert werden, kann eine bestimmte Gruppe ausgewählt und gezeichnet werden.
Parallele Koordinaten ? Unterstützt kategoriale Variablen, mit denen Sie Achsen neu anordnen und nach bestimmten Achsen filtern können
Parallele Koordinatenは描画後に色々試行錯誤することで真の威力を発揮する
Wärmekarte Wenn Sie keine zusätzlichen Informationen schweben müssen, reicht Seaborn aus
Es sollte sein, aber die Figur des Seegeborenen brach zusammen, weil die Umwelt schlecht ist
Liniendiagramm Sie können die Position der Koordinaten auch an Punkten, die weit von der x- und der y-Achse entfernt sind, intuitiv mit dem Umschalter ermitteln.
Mit dem Schieberegler können Sie einen beliebigen Bereich zeichnen
Wenn es mehrere Faltlinien gibt(Zum Beispiel Bevölkerungsentwicklung in 47 Präfekturen usw.), Sie können die Präfektur auswählen und zeichnen, die Sie vergleichen möchten

Der überwältigende Sieg von Plotly Express Es gab viele andere Zeichnungen wie Radarkarten, Dichteverteilungen und Animationen, die bei guter Verwendung interessant wären. Außerdem, wenn Sie Slider beherrschen, wird es sehr cool sein. https://plot.ly/python/sliders/ newplot (20).png https://uchidehiroki.github.io/plotly_folders/Basic_Charts/histogram_with_slider.html

(Neben 1) Bei der Verwendung von Plotly Express zu beachtende Punkte

Von kazutan.R

Es ist problematischer als die Bilddatei, aber es scheint einfacher zu sein, darauf zu verweisen, nachdem die HTML-Datei lokal platziert oder online gehostet wurde. Es ist besser, online zu hosten, insbesondere wenn Sie mit mehreren Personen teilen

(Nebenbei 2) So verweisen Sie später auf die HTML-Datei

Im Vergleich zu PNG- und JPEG-Bilddateien ist es ein kleiner Trick, die HTML-Datei anzuzeigen. ** Bei Offline-Anzeige ** Sie können zeichnen, indem Sie den Pfad der HTML-Datei angeben

** Bei Online-Anzeige ** Plotstil: Verwenden Sie chart_studio Sie können zeichnen, indem Sie die HTML-Datei auf dem Server von plotly hosten und auf die veröffentlichte URL verweisen Wenn Sie jedoch über ein kostenloses Konto verfügen, können Sie keinen geheimen Link erstellen oder in einer privaten Umgebung hosten (sondern verdienen dort viel Geld). Der öffentliche Host der HTML-Datei unterstützt auch insgesamt nur bis zu 100.

Verwenden Sie also Github-Seiten. Platzieren Sie die HTML-Datei im Github-Repository, wählen Sie "Hauptzweig" unter "Einstellungen" → "GitHub-Seiten" → "Quelle" und klicken Sie auf "Speichern". あとは、username.github.io/path/to/html/filesにアクセスすればOKです Es ist einfach, HTML-Dateien zu verwalten, weil es Github ist. Offizielle Website: https://pages.github.com/ Referenz: https://www.tam-tam.co.jp/tipsnote/html_css/post11245.html

Es scheint, dass Github-Seiten selbst sogar in einem privaten Repository veröffentlicht werden können. Wenn Sie mit Daten analysieren, die Sie nicht öffentlich veröffentlichen möchten, empfiehlt es sich, die HTML-Zeichnungsdatei in einem privaten Repository zu speichern und nur die URL freizugeben.

(Nebenbei 3) Siehe HTML-Datei im Jupyter Lab

#Sie können auf die HTML-Datei verweisen und sie einbetten
HTML(filename='../output/histogram_with_boxplot_px.html')
#Sie können auch auf das statische HTML verweisen, das Sie online gestellt haben
HTML(url='https://uchidehiroki.github.io/plotly_folders/Basic_Charts/barplot_px.html')

Am Ende

Früher war ich ein Entertainer auf See, aber jetzt muss ich es nicht mehr viel benutzen. Ich bin ein bisschen einsam, aber ich werde mit der Zeit gehen. Ich hoffe, dass die Anzahl der Plotly Express-Benutzer zunimmt. Es ist lange her, aber danke für Ihre Beziehung.

Recommended Posts

Zusammenfassung der grundlegenden Zeichenmethode von Plotly Express, dem De-facto-Standard der Python-Zeichenbibliothek in der Reiwa-Ära
Zusammenfassung der Versionen der Standard-Python-Bibliothek, die jetzt auf https vom Server validiert werden
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
So debuggen Sie eine Standard-Python-Bibliothek in Visual Studio
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Wrap (Teil der) AtCoder Library in Cython zur Verwendung in Python
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
[Sprechen Sie über die Zeichnungsstruktur von plotly] Dynamische Visualisierung mit plotly [Python]
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go
Überprüfen Sie das Verhalten des Zerstörers in Python
Zusammenfassung verschiedener for-Anweisungen in Python
Das Ergebnis der Installation von Python auf Anaconda
Was ist "Mahjong" in der Python-Bibliothek? ??
Grundlagen zum Ausführen von NoxPlayer in Python
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Auf der Suche nach dem schnellsten FizzBuzz in Python
Python-Grundkurs (Ende 15)
Sie können die Methode der Klasse direkt in Python3 aufrufen, ohne @staticmethod hinzuzufügen
Ändern Sie in Python das Verhalten der Methode je nach Aufruf