设置绘图后端
我们可以使用 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 之前或之后单独运行设置后端的代码,或者在不同的会话或内核中处理不同的后端。这确保了每个后端都在其适当的环境中运行,不会相互干扰。如果你在一个脚本中需要使用多种后端,你可能需要手动切换后端,或者使用独立的绘图区域来确保兼容性。
hv.extension('matplotlib')
可用的后端包括:
- Bokeh
- Plotly
- Matplotlib
可用的绘图类型
.plot 方法可用的绘图类型将随着时间的推移而发展。我们可以通过在 df.plot 上使用 Python 的 dir 函数来打印当前可用的方法列表,从而查看当前的可用列表。
[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 来制作折线图
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 行,我们都会得到相同的图表。
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 相当于:
df.plot.ohlc('date', ['open', 'low', 'high', 'close'], grid=True)
我们现在来画一个简单的蜡烛图:
import polars as pl
import hvplot as hvdata = [ ## 字段为: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快速入门