[EDA super basic] Visualisation tracée et dynamique [python3, table, bar, box, violon, joy]

python==3.8 plotly==4.10.0

Montrer la tête

L'habituel

import plotly.express as px
df = px.data.tips()
df.head()

image.png

Passer le dataframe naïvement

import plotly.figure_factory as ff
fig = ff.create_table(df.head())#only df ok
fig.show()

image.png

Placer des objets graphiques dans la figure

import plotly.graph_objects as go

fig = go.Figure(data=[go.Table(
    header=dict(values=df.columns,
                line_color='darkslategray',
                fill_color='lightskyblue',
                align='left'),
    cells=dict(values=df[0:5].transpose(),
               line_color='darkslategray',
               fill_color='lightcyan',
               align='left'))
])

fig.update_layout(width=600, height=400)
fig.show()

Bien sûr, add_trace est bien

import plotly.graph_objects as go

fig = go.Figure()
    
fig.add_trace(go.Table(
    header=dict(values=df.columns,
                line_color='darkslategray',
                fill_color='lightskyblue',
                align='left'),
    cells=dict(values=df[0:5].transpose(),
               line_color='darkslategray',
               fill_color='lightcyan',
               align='left'))
)

fig.update_layout(width=600, height=400)
fig.show()

tb.gif

graphique à barres

Si vous prétraitez à l'avance, ce sera le graphique à barres habituel

import plotly.express as px

df_bar = df.groupby('day',as_index=False).sum()

fig = px.bar(df_bar, y='total_bill', x='day', text='total_bill')
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
fig.show()

image.png

S'il n'est pas prétraité, ce sera une belle pile

import plotly.express as px

df = px.data.tips()
fig = px.bar(df, x="sex", y="total_bill", color="time",
                  title="Total Bill")
fig.update_layout(showlegend=False)
fig.show()

image.png

Utilisez l'histgramme au lieu de la barre si vous voulez empiler finement et les afficher tous ensemble

import plotly.express as px

df = px.data.tips()
fig = px.histogram(df, x="sex", y="total_bill", color="time",
                  title="Total Bill by Sex")
fig.update_layout(showlegend=False)
fig.show()

image.png

Vous pouvez spécifier si vous voulez empiler (empiler) ou mettre côte à côte (groupe, esquiver) en mode barre.

import plotly.express as px
df = px.data.tips()
fig = px.bar(df, x="day", y="tip", color="time", barmode="group",title="bar")
fig.update_layout(font_family="Rockwell", showlegend=False)

fig.show()

image.png

Empilement par add_trace

import plotly.graph_objects as go
df = px.data.tips()
fig = go.Figure()
fig.add_trace(go.Bar(
    y=df.query("sex=='Male'")['day'],
    x=df['total_bill'],
    name='Male , total_bill',
    orientation='h',
    marker=dict(
        color='rgba(46, 78, 139, 0.6)',
        line=dict(color='rgba(46, 78, 139, 1.0)', width=3)
    )
))

fig.add_trace(go.Bar(
    y=df.query("sex=='Female'")['day'],
    x=df['total_bill'],
    name='Female , total_bill',
    orientation='h',
    marker=dict(
        color='rgba(58, 71, 80, 0.6)',
        line=dict(color='rgba(58, 71, 80, 1.0)', width=3)
    )
))

fig.update_layout(barmode='stack')

fig.show()

image.png

Vous pouvez également spécifier une animation si vous avez des données chronologiques (ordonnées)

import plotly.express as px
df = px.data.gapminder()
fig = px.bar(df, x="continent", y="pop", color="continent",
  animation_frame="year", animation_group="country", range_y=[0,4000000000])
fig.show()

ani.gif

violon

Violon sur plotly.express

import plotly.express as px
df = px.data.tips()
fig = px.violin(df, x="sex", y="tip",
                color="time", facet_col="smoker")
fig.show()

image.png

Violon dans graph_objects

import plotly.graph_objects as go
df = px.data.tips()
fig = go.Figure()

for day in days:
    fig.add_trace(go.Violin(x=df['day'][df['day'] == day],
                            y=df['total_bill'][df['day'] == day],
                            name=day,
                            box_visible=True,
                            meanline_visible=True))

fig.show()

image.png

Ajouter des points et des cases

import plotly.express as px

fig = px.violin(df, x="sex", y="tip",
                color="time", facet_col="smoker",
               box=True, points="all")
fig.show()

image.png

Limité à un côté sur le côté

from plotly.subplots import make_subplots

fig = make_subplots(rows=1, cols=2)

fig.add_trace(go.Violin(x=df.total_bill), row=1, col=1)
fig.update_traces(orientation='h', side='positive', width=3, points=False)
fig.update_layout(xaxis_showgrid=False, xaxis_zeroline=False)

fig.add_trace(go.Violin(x=df.total_bill), row=1, col=2)
fig.update_traces(orientation='h', width=3, points=False)
fig.update_layout(xaxis_showgrid=False, xaxis_zeroline=False)

fig.show()

image.png

Faire une face à la fois (violon partagé)

import plotly.graph_objects as go

fig = go.Figure()

fig.add_trace(go.Violin(x=df['day'][ df['smoker'] == 'Yes' ],
                        y=df['total_bill'][ df['smoker'] == 'Yes' ],
                        legendgroup='Yes', scalegroup='Yes', name='Yes',
                        side='negative',
                        line_color='blue')
             )
fig.add_trace(go.Violin(x=df['day'][ df['smoker'] == 'No' ],
                        y=df['total_bill'][ df['smoker'] == 'No' ],
                        legendgroup='No', scalegroup='No', name='No',
                        side='positive',
                        line_color='orange')
             )
fig.update_traces(meanline_visible=True)
fig.update_layout(violingap=0, violinmode='overlay')
fig.show()

image.png

Intrigue de joie utilisant le violon

import plotly.graph_objects as go
from plotly.colors import n_colors
import numpy as np
np.random.seed(1)

data = (np.linspace(1, 2, 12)[:, np.newaxis] * np.random.randn(12, 200) +
            (np.arange(12) + 2 * np.random.random(12))[:, np.newaxis])

colors = n_colors('rgb(5, 200, 200)', 'rgb(200, 10, 10)', 12, colortype='rgb')

fig = go.Figure()
for data_line, color in zip(data, colors):
    fig.add_trace(go.Violin(x=data_line, line_color=color))

fig.update_traces(orientation='h', side='positive', width=3, points=False)
fig.update_layout(xaxis_showgrid=False, xaxis_zeroline=False)
fig.show()

image.png

Boîte à moustaches

Boîte de moustaches en px

import plotly.express as px
df = px.data.tips()
fig = px.box(df, x="sex", y="tip",
                color="time", facet_col="smoker")
fig.show()

image.png

Boîte à barbe en aller

import plotly.graph_objects as go
df = px.data.tips()
fig = go.Figure()

for day in days:
    fig.add_trace(go.Box(x=df['day'][df['day'] == day],
                            y=df['total_bill'][df['day'] == day],
                            name=day))

fig.show()

image.png

Ajouter un intervalle de confiance

Vous pouvez utiliser notched pour trouver l'intervalle de confiance 95% de la zone restreinte

import plotly.express as px

fig = px.box(df, x="sex", y="tip",
                color="time", facet_col="smoker", notched=True)
fig.show()

image.png

Recommended Posts

[EDA super basic] Visualisation tracée et dynamique [python3, table, bar, box, violon, joy]
[Visualisation du ratio] Visualisation tracée et dynamique [python, pie, sunburst, sanky, treemap, fannele,]
[Visualisation de la densité] Visualisation tracée et dynamique [python3, hist, kde, jointure, contour, heat map]
[Dessin et étiquetage de plusieurs graphes] Visualisation tracé dynamique [python3, make subplot, xlabel, ylabel]
[Diagramme de dispersion, tracé 3D et plan de régression] Visualisation tracé dynamique [python, scatter, 3D, surface, paire, joint]
[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
mémorandum python super basique