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快速入门

相关推荐
coder7777几秒前
js逆向分享
javascript·爬虫·python·算法·安全
QQ_7781329747 分钟前
从文本到视频:基于扩散模型的AI生成系统全解析(附PyTorch实现)
人工智能·pytorch·python
明月看潮生27 分钟前
青少年编程与数学 02-016 Python数据结构与算法 25课题、量子算法
python·算法·青少年编程·量子计算·编程与数学
水w29 分钟前
【Python爬虫】详细入门指南
开发语言·爬虫·python·scrapy·beautifulsoup
weixin_4450547234 分钟前
力扣刷题-热题100题-第35题(c++、python)
c++·python·leetcode
_x_w2 小时前
【17】数据结构之图及图的存储篇章
数据结构·python·算法·链表·排序算法·图论
pianmian12 小时前
arcgis几何与游标(1)
开发语言·python
冬天vs不冷2 小时前
SpringBoot条件注解全解析:核心作用与使用场景详解
java·spring boot·python
nanzhuhe2 小时前
python中参数前**的含义
开发语言·python
hello_ejb32 小时前
聊聊Spring AI Alibaba的PdfTablesParser
windows·python·spring