OHLC 图、瀑布图和漏斗图


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

OHLC 图表


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

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

用于演示 OHLC 图表的示例数据如下所示。它具有对应于相应日期字符串的高、低、开和收值的列表对象。字符串的日期表示通过使用转换为日期对象 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 参数,其他的用于开、高、低和收盘所需的参数 go.Ohlc() 返回 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

烛台图

The 烛台图 类似于 OHLC 图。它就像一个组合 折线图 and a 条形图 .方框代表开盘价和收盘价之间的价差,线代表低值和高价之间的价差。收盘价高于(低于)开盘价的样本点称为增加(减少)。

烛台跟踪由返回 go.Candlestick() 函数 .我们使用相同的数据(如 OHLC 图表)来渲染烛台图表,如下所示:

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

上面给出的代码的输出如下:

Candlestick Chart

瀑布图


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

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

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

另一个属性是 measure 这是一个包含值类型的数组。默认情况下,这些值被视为 relative .将其设置为“总计”以计算总和。如果它等于 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)

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

Waterfall Chart

漏斗图


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

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

Plotly's 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()

输出如下:

Funnel Chart