OHLC 图、瀑布图和漏斗图

本章重点介绍其他三种类型的图表,包括 OHLC、瀑布图和漏斗图,这些图表都可以借助 Plotly 制作。

OHLC 图

开盘-最高-最低-收盘图(也称为 OHLC)是一种条形图,通常用于说明股票等金融工具价格的变动。OHLC 图很有用,因为它们显示了一段时间内的四个主要数据点。该图表类型很有用,因为它可以显示增加或减少的动量。高点和低点数据点可用于评估波动性。

图表上的每条垂直线显示一个时间单位(例如一天或一小时)内的价格范围(最高价和最低价)。刻度线从线的每一侧投射,左侧表示开盘价(例如,对于每日条形图,这将是当天的起始价格),右侧表示该时间段的收盘价。

下面显示了用于演示 OHLC 图表的示例数据。它具有与最高、最低、开盘和收盘值相对应的列表对象,如相应的日期字符串。使用 datetime 模块中的 strtp() 函数将字符串的日期表示转换为日期对象。

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
]

我们必须使用上述日期对象作为 x 参数,并将其他日期对象用作返回 OHLC 轨迹的​​ go.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)

代码的输出如下所示 −

OHLC Chart

蜡烛图

蜡烛图与 OHLC 图类似。它就像是 折线图条形图 的结合。方框表示开盘价和收盘价之间的差价,线条表示低值和高值之间的差价。收盘价高于(低于)开盘价的样本点称为增加(减少)。

蜡烛图轨迹由 go.Candlestick() 函数 返回。我们使用相同的数据(与 OHLC 图一样)来呈现如下所示的蜡烛图 −

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

上述代码的输出如下所示 −

烛台图

瀑布图

瀑布图(也称为飞砖图或马里奥图)有助于理解连续引入的正值或负值的累积效应,这些正值或负值可以基于时间或基于类别。

初始值和最终值显示为列,单独的负值和正值调整以浮动步骤表示。一些瀑布图将列之间的线连接起来,使图表看起来像一座桥梁。

go.Waterfall() 函数返回瀑布轨迹。此对象可以通过各种命名参数或属性进行自定义。在这里,x 和 y 属性设置图形 x 和 y 坐标的数据。两者都可以是 Python 列表、numpy 数组或 Pandas 系列或字符串或日期时间对象。

另一个属性是 measure,它是一个包含值类型的数组。默认情况下,这些值被视为相对。将其设置为"total"以计算总和。如果它等于absolute,它会重置计算的总数或在需要时声明初始值。'base' 属性设置绘制条形基线的位置(以位置轴单位为单位)。

以下代码呈现瀑布图 −

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)

下面提到的输出是上述代码的结果。

瀑布图

漏斗图

漏斗图表示业务流程不同阶段的数据。它是商业智能中识别流程潜在问题区域的重要机制。漏斗图用于可视化数据在从一个阶段传递到另一个阶段时如何逐渐减少。每个阶段的数据都表示为 100%(整体)的不同部分。

与饼图一样,漏斗图也不使用任何轴。它也可以被视为类似于堆积百分比条形图。任何漏斗都由称为头部(或底部)的较高部分和称为颈部的较低部分组成。漏斗图最常见的用途是可视化销售转化数据。

Plotly 的 go.Funnel() 函数生成漏斗轨迹。要提供给此函数的基本属性是 x 和 y。它们每个都分配有一个 Python 项目列表或一个数组。

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()

输出如下所示−

漏斗图