[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]

Je vais museler la série chronologique

c.gif

environnement

python==3.8 plotly==4.10.0

Visualisation de séries chronologiques à l'aide de l'intrigue

Le prétraitement des données de séries chronologiques est difficile, mais une belle visualisation est tout aussi difficile.

S'il y a un pic étrange dans la visualisation des séries chronologiques, ・ Quel mois et quel jour était-ce? ・ Si c'est anormal, pouvez-vous vous référer au commentaire à ce moment-là? ・ Est-il possible d'agrandir ou de modifier un peu plus l'échelle? Arrivera

Il est difficile d'aller du côté des données source à chaque fois, mais avec la visualisation dynamique de l'intrigue Il est facile d ’identifier le mois et le jour. Il est également possible de se limiter à une période spécifique et de passer à des commandes semestrielles seulement

Graphique de première ligne

Essayez d'utiliser un tracé linéaire

import plotly.express as px
fig = px.line(x=[1,2,3,4,5], y=[10,11,15,16,8], title="line plot")
fig.show()

image.png

Graphique linéaire ordinaire

Essayez d'utiliser des données de cours de bourse qui peuvent être appelées à partir des ensembles de données de plotly

image.png

import plotly.express as px
import pandas as pd
df = px.data.stocks()
fig = px.line(df,x='date', y='NFLX', title="NFLX stocks plot")
fig.show()

Si la date est saisie dans un format reconnaissable, elle sera mise à l'heure en la spécifiant sur l'axe X.

image.png

Plage pour spécifier la période d'affichage

import plotly.express as px
import pandas as pd
df = px.data.stocks()
fig = px.line(df,x='date', y='NFLX', title="NFLX stocks plot", range_x=['2018-07-01','2019-12-31'])
fig.show()

image.png

Spécifiez plusieurs sur l'axe Y

import plotly.express as px
import pandas as pd
df = px.data.stocks()
fig = px.line(df,x='date', y=df.columns[1:6], title="6 company stocks plot")
fig.show()

image.png

Changer l'échelon

import plotly.express as px
import pandas as pd
df = px.data.stocks()
fig = px.line(df,x='date', y=df.columns[1:6], title="6 company stocks plot")
fig.update_xaxes(
    dtick="M1",
    tickformat="%b\n%Y")
fig.show()

image.png

〇 Passez la pause du mois pour décoller avec M 〇 Le format de l'étiquette de l'échelle peut être transmis sous forme de caractères et le format d'affichage peut être modifié à l'aide de symboles de saut de ligne, etc.

Par exemple

fig.update_layout(
    title="6 company stocks plot",
    xaxis_tickformat = '%d %B (%a)<br>%Y'
)

Si vous spécifiez comme, vous pouvez utiliser l'affichage du jour et de l'année, du mois et du jour

image.png

Changer le comportement en tenant la souris

Normalement, vous pouvez vous référer à un point d'information en maintenant la souris dessus, Vous pouvez également modifier la disposition pour afficher les informations de toutes les données

Cas normal

a.gif

import plotly.express as px
import pandas as pd
df = px.data.stocks()
fig = px.line(df,x='date', y=df.columns[1:6], title="6 company stocks plot")
fig.update_xaxes(
    dtick="M1",
    tickformat="%b\n%Y")

fig.update_layout(template=go.layout.Template())

fig.show()

b.gif

Sélecteur de plage qui rend la section d'affichage interactive

En utilisant update_layout, vous pouvez ajouter une fonction pour spécifier la section d'affichage sur le graphique mis dans la fig. Applicable à la fois à go.Figure et à plotly.express Pratique car vous pouvez le copier et l'utiliser

Ajouter à graph_objects

import plotly.graph_objects as go
import pandas as pd

fig = go.Figure()

fig.add_trace(go.Scatter(x=list(df.date), y=list(df.GOOG)))

fig.update_layout(
    title_text="range slider and selectors"
)

fig.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1m",
                     step="month",
                     stepmode="backward"),
                dict(count=6,
                     label="6m",
                     step="month",
                     stepmode="backward"),
                dict(count=1,
                     label="YTD",
                     step="year",
                     stepmode="todate"),
                dict(count=1,
                     label="1y",
                     step="year",
                     stepmode="backward"),
                dict(step="all")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        type="date"
    )
)

fig.show()

Ajouter à plotly.express

import plotly.express as px
fig = px.line(df,x='date', y=df.columns[1:6])

fig.update_layout(
    title_text="range slider and selectors"
)

fig.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1m",
                     step="month",
                     stepmode="backward"),
                dict(count=6,
                     label="6m",
                     step="month",
                     stepmode="backward"),
                dict(count=1,
                     label="YTD",
                     step="year",
                     stepmode="todate"),
                dict(count=1,
                     label="1y",
                     step="year",
                     stepmode="backward"),
                dict(step="all")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        type="date"
    )
)

fig.show()

c.gif

tracé utilisant scatter

import plotly.express as px
fig = px.scatter(df,x=df['date'], y=df.columns[1:6])
fig.show()

image.png

tracer à l'aide de graph_objects


import plotly.graph_objects as go

fig = go.Figure([
    go.Scatter(
        x=df['date'], y=df[df.columns[i]],
        opacity=.5
    )
    for i in range(1,len(df.columns))
])

fig.show()

image.png

graph_objects est bon pour dessiner comme pour ajouter au campus par le haut Ajoutez go.scatter au canevas créé avec go.Figure Cette fois, j'ai ajouté go.scatter 5 fois en changeant la colonne avec for, Vous pouvez les ajouter individuellement avec add_trace Dans ce cas, certaines lignes peuvent être des lignes discontinues et certaines lignes peuvent être des lignes pleines.

Ce qui suit est un changement de type de ligne

import plotly.graph_objects as go

fig = go.Figure([
    go.Scatter(
        x=df['date'], y=df[df.columns[i]], 
        opacity=.5, 
        line=dict(dash='dash')
    )
    for i in range(1,len(df.columns))
])

fig.show()

image.png

Graphique de bougie de stock

Vous pouvez facilement créer un graphique à bougies en spécifiant le prix d'ouverture; prix élevé; prix bas; cours de clôture du cours de l'action.

import plotly.graph_objects as go
import pandas as pd
from datetime import datetime

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')

fig = go.Figure(data=[go.Candlestick(x=df['Date'],
                open=df['AAPL.Open'],
                high=df['AAPL.High'],
                low=df['AAPL.Low'],
                close=df['AAPL.Close'])])

fig.update_layout(
    title_text="Candle"
)

fig.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1m",
                     step="month",
                     stepmode="backward"),
                dict(count=6,
                     label="6m",
                     step="month",
                     stepmode="backward"),
                dict(count=1,
                     label="YTD",
                     step="year",
                     stepmode="todate"),
                dict(count=1,
                     label="1y",
                     step="year",
                     stepmode="backward"),
                dict(step="all")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        type="date"
    )
)

fig.show()

image.png

c'est tout

C'est formidable de pouvoir voir les valeurs

Recommended Posts

[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
[Écrire sur la carte avec plotly] Visualisation dynamique avec plotly [python]
Obtenez des stocks avec Python
"Obtenir des données de séries chronologiques de stock à partir de k-db.com avec Python" Mémo de création d'environnement de programme
Téléchargez les données de cours des actions japonaises avec Python
[Parlez de la structure de dessin de plotly] Visualisation dynamique avec plotly [python]
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Web scraping avec Python (cours de l'action)
Python: analyse des séries chronologiques
Question sur la série chronologique Python
Visualisation de la logistique avec Python
Créez une carte chronologique animée de l'état de l'infection par le virus corona avec python + plotly
Visualisez plus clairement les prédictions de séries chronologiques de Prophet avec Plotly
Mesure du temps d'exécution avec Python avec
Python: prévision du cours de l'action, partie 2
[Python] Tracer des données de séries chronologiques
Synchronisation de l'heure (Windows) avec Python
Python: prévision du cours de l'action partie 1
Historique de programmation 1 mois Extraire le stock NY Dow avec Python!
J'ai créé un package pour filtrer les séries chronologiques avec python
Prédiction de séries chronologiques facile avec Prophet
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Proxy dynamique avec python, ruby, PHP
[Python] Mes prévisions de cours de bourse [HFT]
L'intrigue de séries temporelles a commencé ~ édition python ~
Visualisez facilement vos données avec Python seaborn.
[Indicateur de capacité, diagramme de Gantt, interface utilisateur] Visualisation tracé dynamique [python, affichage de jauge, diagramme de Gantt]
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
[Visualisation du ratio] Visualisation tracée et dynamique [python, pie, sunburst, sanky, treemap, fannele,]
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
[Visualisation de la densité] Visualisation tracée et dynamique [python3, hist, kde, jointure, contour, heat map]
Prédiction des données de séries chronologiques par projection simplex
Prédire les données de séries chronologiques avec un réseau neuronal
Vérifiez les cours des actions avec Slackbot en utilisant Python
[Python] Accélère le chargement du fichier CSV de séries chronologiques
Prévision de stock avec TensorFlow (LSTM) ~ Prévision de stock Partie 1 ~
[Python] Création d'un graphique de tirage des actions
Recommandation d'Altair! Visualisation des données avec Python
Text mining avec Python ② Visualisation avec Word Cloud
Formater et afficher des données de séries chronologiques avec différentes échelles et unités avec Python ou Matplotlib
[Dessin et étiquetage de plusieurs graphes] Visualisation tracé dynamique [python3, make subplot, xlabel, ylabel]
[EDA super basic] Visualisation tracée et dynamique [python3, table, bar, box, violon, joy]
[Diagramme de dispersion, tracé 3D et plan de régression] Visualisation tracé dynamique [python, scatter, 3D, surface, paire, joint]
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Agrégation pratique de séries chronologiques avec TimeGrouper de pandas
Python: analyse des séries temporelles: création d'un modèle SARIMA
[Python3] Une histoire bloquée avec la conversion du fuseau horaire
Python: Analyse des séries temporelles: Constantity, modèle ARMA / ARIMA
Acquisition de données chronologiques (quotidiennes) des cours des actions
Utilisez Logger avec Python pour le moment
Comment mesurer le temps d'exécution avec Python Partie 1
Voir les détails des données de séries chronologiques dans Remotte
Acquisition automatique des données de cours des actions avec docker-compose
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
Comment mesurer le temps d'exécution avec Python, partie 2
✨ Facile avec Python ☆ Temps écoulé estimé après la mort ✨