Gráfico OHLC, gráfico de cascada y gráfico de embudo

Este capítulo se centra en otros tres tipos de gráficos, incluidos OHLC, Waterfall y Funnel Chart, que se pueden hacer con la ayuda de Plotly.

Gráfico OHLC

Un open-high-low-close gráfico (también OHLC) es un tipo de bar chartNormalmente se utiliza para ilustrar los movimientos en el precio de un instrumento financiero como las acciones. Los gráficos OHLC son útiles ya que muestran los cuatro puntos de datos principales durante un período. El tipo de gráfico es útil porque puede mostrar un impulso creciente o decreciente. Los puntos de datos altos y bajos son útiles para evaluar la volatilidad.

Cada línea vertical del gráfico muestra el rango de precios (los precios más alto y más bajo) en una unidad de tiempo, como el día o la hora. Las marcas de verificación se proyectan a cada lado de la línea que indican el precio de apertura (por ejemplo, para un gráfico de barras diario, este sería el precio inicial para ese día) a la izquierda, y el precio de cierre para ese período de tiempo a la derecha.

A continuación se muestran datos de muestra para la demostración de la tabla OHLC. Tiene objetos de lista correspondientes a valores altos, bajos, abiertos y cerrados como en las cadenas de fechas correspondientes. La representación de la fecha de la cadena se convierte en un objeto de fecha utilizandostrtp() función del módulo de fecha y hora.

open_data = [33.0, 33.3, 33.5, 33.0, 34.1]
high_data = [33.1, 33.3, 33.6, 33.2, 34.8]
low_data = [32.7, 32.7, 32.8, 32.6, 32.8]
close_data = [33.0, 32.9, 33.3, 33.1, 33.1]
date_data = ['10-10-2013', '11-10-2013', '12-10-2013','01-10-2014','02-10-2014']
import datetime
dates = [
   datetime.datetime.strptime(date_str, '%m-%d-%Y').date() 
   for date_str in date_data
]

Tenemos que usar el objeto de fechas anterior como parámetro x y otros para los parámetros abiertos, altos, bajos y cerrados requeridos para go.Ohlc() función que devuelve el rastro OHLC.

trace = go.Ohlc(
   x = dates, 
   open = open_data, 
   high = high_data,
   low = low_data, 
   close = close_data
)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)

La salida del código se da a continuación:

Gráfico de velas

los candlestick chartes similar al gráfico OHLC. Es como una combinación deline-chart y un bar-chart. Las casillas representan el margen entre los valores de apertura y cierre y las líneas representan el margen entre los valores bajos y altos. Los puntos de muestra donde el valor de cierre es mayor (menor) que el valor de apertura se denominan crecientes (decrecientes).

El rastro de Candlestrick es devuelto por go.Candlestick() function. Usamos los mismos datos (que para el gráfico OHLC) para representar el gráfico de velas como se indica a continuación:

trace = go.Candlestick(
   x = dates, 
   open = open_data, 
   high = high_data,
   low = low_data, 
   close = close_data
)

La salida del código anterior se menciona a continuación:

Gráfico de cascada

Un gráfico de cascada (también conocido como flying bricks chart or Mario chart) ayuda a comprender el efecto acumulativo de valores positivos o negativos introducidos secuencialmente que pueden basarse en el tiempo o en la categoría.

Los valores iniciales y finales se muestran como columnas con los ajustes individuales negativos y positivos representados como pasos flotantes. Algunos gráficos en cascada conectan las líneas entre las columnas para que el gráfico parezca un puente.

go.Waterfall()La función devuelve un rastro de cascada. Este objeto se puede personalizar mediante varios argumentos o atributos con nombre. Aquí, los atributos xey configuran datos para las coordenadas xey del gráfico. Ambos pueden ser una lista de Python, una matriz numpy o una serie Pandas o cadenas u objetos de fecha y hora.

Otro atributo es measureque es una matriz que contiene tipos de valores. Por defecto, los valores se consideran comorelative. Póngalo en 'total' para calcular las sumas. Si es igual aabsoluterestablece el total calculado o declara un valor inicial cuando sea necesario. El atributo 'base' establece dónde se dibuja la base de la barra (en unidades del eje de posición).

El siguiente código representa un gráfico en cascada:

s1=[
   "Sales", 
   "Consulting", 
   "Net revenue", 
   "Purchases", 
   "Other expenses", 
   "Profit before tax"
]
s2 = [60, 80, 0, -40, -20, 0]
trace = go.Waterfall(
   x = s1,
   y = s2,
   base = 200,
   measure = [
      "relative", 
      "relative", 
      "total", 
      "relative", 
      "relative", 
      "total"
   ]
)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)

La salida mencionada a continuación es el resultado del código proporcionado anteriormente.

Gráfico de embudo

Los gráficos de embudo representan datos en diferentes etapas de un proceso empresarial. Es un mecanismo importante en Business Intelligence para identificar posibles áreas problemáticas de un proceso. El gráfico de embudo se utiliza para visualizar cómo los datos se reducen progresivamente a medida que pasan de una fase a otra. Los datos en cada una de estas fases se representan como diferentes porciones del 100% (el total).

Al igual que el gráfico circular, el gráfico de embudo tampoco utiliza ningún eje. También puede tratarse como similar a unstacked percent bar chart. Cualquier embudo consta de la parte superior denominada cabeza (o base) y la parte inferior denominada cuello. El uso más común del gráfico de embudo es para visualizar los datos de conversión de ventas.

Plotly's go.Funnel()La función produce un seguimiento de embudo. Los atributos esenciales que se deben proporcionar a esta función son x yy. A cada uno de ellos se le asigna una lista de elementos de Python o una matriz.

from plotly import graph_objects as go
fig = go.Figure(
   go.Funnel(
      y = [
         "Website visit", 
         "Downloads", 
         "Potential customers", 
         "Requested price", 
         "invoice sent"
      ],
      x = [39, 27.4, 20.6, 11, 2]
   )
)
fig.show()

La salida es la que se muestra a continuación: