Polars简明基础教程十二:可视化(二)

设置绘图后端

我们可以使用 hv.extension 更改绘图后端。但是,我们不在此处运行此单元格,因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。

注释:

hvPlot 利用 HoloViews 库来构建图表,并且可以使用多个后端进行渲染,包括 Bokeh(默认)和 Matplotlib。

hv.extension 是一个函数,用于设置 hvPlot 的绘图后端。当你使用 hv.extension 指定一个后端时,比如 Bokeh 或 Matplotlib,hvPlot 将会使用这个后端来渲染所有后续的图表。

然而,在 Jupyter Notebook 或类似的环境中,当你设置了一个特定的后端,如 Bokeh,然后尝试渲染一个依赖于不同后端(如 Matplotlib)的图表时,后一个图表可能不会正确显示,因为它试图使用已经被设置为 Bokeh 的环境来渲染。这是因为 Jupyter Notebook 的输出环境被配置为了 Bokeh,而不再是 Matplotlib。

如果在某个点上设置后端为 Bokeh,那么接下来使用 Matplotlib 或 Seaborn(基于 Matplotlib 的绘图库)绘制的图表可能不会显示,除非你重新设置或重置后端。

为了避免这个问题,你可以在使用 hvPlot 之前或之后单独运行设置后端的代码,或者在不同的会话或内核中处理不同的后端。这确保了每个后端都在其适当的环境中运行,不会相互干扰。如果你在一个脚本中需要使用多种后端,你可能需要手动切换后端,或者使用独立的绘图区域来确保兼容性。

python 复制代码
 hv.extension('matplotlib')

可用的后端包括:

  1. Bokeh
  2. Plotly
  3. Matplotlib

可用的绘图类型

.plot 方法可用的绘图类型将随着时间的推移而发展。我们可以通过在 df.plot 上使用 Python 的 dir 函数来打印当前可用的方法列表,从而查看当前的可用列表。

python 复制代码
​​​​​​​[el for el in dir(df.plot) if not el.startswith("_") ]

area
bar
barh
bivariate
box
dataset
density
errorbars
explorer
heatmap
hexbin
hist
kde
labels
line
ohlc
paths
points
polygons
scatter
step
table
vectorfield
violin

我们将在下面演示更多这些内容

折线图

我们创建一个简单的时间序列 DataFrame 来制作折线图

python 复制代码
p = (
    pl.DataFrame(
        {
            "time":[0,1,2,3,4],
            "val":[0,1,2,3,4],
            
        }
    )
    .plot
    .line(
        x="time",
        y="val"
    )
)

hv.show(p)

要制作多线图,你可以:

  • 指定一列作为x轴维度,然后将所有其他数值列分别绘制为不同的线条
  • 将列名列表传递给 y

因此,无论是否在此处注释掉 y 行,我们都会得到相同的图表。

python 复制代码
p = (
    pl.DataFrame(
        {
            "time":[0,1,2,3,4],
            "val":[0.0,1,2,3,4],
            "vals2":[10.0,11,12,13,14]
            
        }
    )
    .plot
    .line(
        x="time",
         y=["val","vals2"]
    )
)

hv.show(p)

蜡烛图

OHLC 是一种有用的图表类型,用于可视化股票走势。

默认情况下,OHLC 会假定索引或第一个日期时间列应映射到 x 轴,而前四个非日期时间列分别对应于 O(开盘价)、H(最高价)、L(最低价)和 C(收盘价)组件。

因此,默认调用 ohlc 相当于:

python 复制代码
df.plot.ohlc('date', ['open', 'low', 'high', 'close'], grid=True)

我们现在来画一个简单的蜡烛图:

python 复制代码
import polars as pl
import hvplot as hv

data = [  ## 字段为:time, open, high,low,close
    (1., 10, 13, 5, 11),
    (2., 13, 17, 9, 12),
    (3., 13, 14, 11, 13),
    (4., 14, 15, 5, 11),
    (5., 15, 19, 8, 12),
    (6., 9, 15, 8, 10),
]
df = pl.DataFrame(
        data,
        schema=['time','open','high','low','close'],
        orient="row"
    )
p = df.plot.ohlc('time',['open','high','low','close'])
hv.show(p)

Polars简明基础教程系列

Polars简明基础教程十二:可视化(二)

Polars简明基础教程十一:可视化(一)

Polars简明基础教程十:Numpy和Pandas的相互转换(2)

Polars简明基础教程九:Numpy和Pandas的相互转换(1)

Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A

Polars简明基础教程六:什么是Polars的"DataFrame(数据框)_下"

Polars简明基础教程五:什么是Polars的"DataFrame(数据框)_上"

Polars简明基础教程四:懒惰模式 2:评估查询

Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)

Polars简明基础教程二:懒惰模式 1:引入懒惰模式

Polars简明基础教程一:Polars快速入门

相关推荐
数据智能老司机16 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机17 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机17 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机17 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i17 小时前
drf初步梳理
python·django
每日AI新事件17 小时前
python的异步函数
python
这里有鱼汤18 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook1 天前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室1 天前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三1 天前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试