Gráficos de velas en Plotly
La ciencia de datos es una rama de las ciencias de la computación que utiliza algoritmos, procesos, sistemas, matemáticas y procedimientos científicos para extraer información y conocimientos de datos estructurados, no estructurados y ruidosos y utiliza esos aprendizajes para resolver problemas comerciales y crear soluciones basadas en el aprendizaje.
Python y R son dos lenguajes de programación famosos en la comunidad de ciencia de datos debido al soporte y las capacidades que ofrecen estos lenguajes.
Dado que la visualización de datos es un componente clave de la ciencia de datos, Python ofrece una biblioteca, Plotly, que nos ayuda a crear gráficos y mapas interactivos.
Admite varios tipos de gráficos, como gráficos de dispersión, gráficos de líneas, gráficos de barras, gráficos circulares, gráficos de burbujas, barras de error, histogramas, histogramas 2D, mapas de calor, velas japonesas, mapas de coropletas de Mapbox, clustergramas, etc.
Este artículo habla sobre una de las tramas que admite Plotly, a saber, las velas japonesas.
Velas en Python
Un gráfico de velas japonesas es un tipo de gráfico financiero que describe los valores alto
, bajo
, abierto
y cerrado
para una determinada coordenada x
. El cuadro de una vela representa el diferencial entre los valores de apertura
y cierre
.
Las líneas que se extienden por los extremos de las cajas representan la diferencia entre los valores alto y bajo.
Podemos crear gráficos de velas usando Plotly. Consulte el siguiente código de Python para ver un ejemplo simple.
import pandas as pd
from datetime import datetime
import plotly.graph_objects as go
dataFrame = pd.read_csv(
"https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv"
)
figure = go.Figure(
data=[
go.Candlestick(
x=dataFrame["Date"],
open=dataFrame["AAPL.Open"],
high=dataFrame["AAPL.High"],
low=dataFrame["AAPL.Low"],
close=dataFrame["AAPL.Close"],
)
]
)
figure.show()
Producción:
Los datos en el archivo se ven de la siguiente manera. Las siguientes son las primeras diez líneas del archivo CSV.
Date,AAPL.Open,AAPL.High,AAPL.Low,AAPL.Close,AAPL.Volume,AAPL.Adjusted,dn,mavg,up,direction
2015-02-17,127.489998,128.880005,126.919998,127.830002,63152400,122.905254,106.7410523,117.9276669,129.1142814,Increasing
2015-02-18,127.629997,128.779999,127.449997,128.720001,44891700,123.760965,107.842423,118.9403335,130.0382439,Increasing
2015-02-19,128.479996,129.029999,128.330002,128.449997,37362400,123.501363,108.8942449,119.8891668,130.8840887,Decreasing
2015-02-20,128.619995,129.5,128.050003,129.5,48948400,124.510914,109.7854494,120.7635001,131.7415509,Increasing
2015-02-23,130.020004,133,129.660004,133,70974100,127.876074,110.3725162,121.7201668,133.0678174,Increasing
2015-02-24,132.940002,133.600006,131.169998,132.169998,69228100,127.078049,111.0948689,122.6648335,134.2347981,Decreasing
2015-02-25,131.559998,131.600006,128.149994,128.789993,74711700,123.828261,113.2119183,123.6296667,134.0474151,Decreasing
2015-02-26,128.789993,130.869995,126.610001,130.419998,91287500,125.395469,114.1652991,124.2823333,134.3993674,Increasing
2015-02-27,130,130.570007,128.240005,128.460007,62014800,123.510987,114.9668484,124.8426669,134.7184854,Decreasing
...
A continuación, utilizando la clase Figura
, creamos una instancia en la que establecemos la propiedad datos
en un objeto de la clase Candelabro
. Para la instancia de la clase Candlestick
, establecemos los valores x
en la columna Date
, open
en la columna AAPL.Open
, high
en la columna AAPL.High
, low
en columna AAPL.Low
y close
a la columna AAPL.Close
del archivo CSV.
A continuación, mostramos el gráfico de velas utilizando el método show()
disponible en la instancia Figura
.
Mostrar un gráfico de volumen junto con el gráfico de velas japonesas
Para mostrar un gráfico de volumen junto con el gráfico de velas, podemos agregar un gráfico secundario más pequeño al gráfico de velas. Este gráfico residirá debajo del gráfico de velas japonesas y contendrá detalles sobre el volumen de existencias vendido diariamente.
Para hacer una estructura de cuadrícula, usaremos el método make_subplots()
y especificaremos 2
filas y 1
columnas. A continuación, crearemos un diagrama de velas, como se explicó anteriormente, y un diagrama de barras para representar el volumen.
Por último, agregaremos ambas parcelas a la cuadrícula o subparcelas que acabamos de crear y mostraremos ambas parcelas. Tenga en cuenta que la declaración figure.update(layout_xaxis_rangeslider_visible = False)
deshabilita el control deslizante de rango ofrecido por el gráfico de velas japonesas.
Consulte el siguiente código de Python para lo mismo.
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
dataFrame = pd.read_csv(
"https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv"
)
figure = make_subplots(
rows=2, cols=1, shared_xaxes=True, vertical_spacing=0.05, row_width=[0.2, 0.7]
)
appleStockPlot = go.Candlestick(
x=dataFrame["Date"],
open=dataFrame["AAPL.Open"],
high=dataFrame["AAPL.High"],
low=dataFrame["AAPL.Low"],
close=dataFrame["AAPL.Close"],
)
volume = go.Bar(x=dataFrame["Date"], y=dataFrame["AAPL.Volume"], showlegend=False)
figure.add_trace(appleStockPlot, row=1, col=1)
figure.add_trace(volume, row=2, col=1)
figure.update(layout_xaxis_rangeslider_visible=False)
figure.show()
Producción: