You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python hvplot Explorer超10000点折线图异常,能否配置阈值?

hvplot Explorer 大数据点折线图异常问题解答

问题描述

使用Python hvplot Explorer绘制折线图时,当数据点数量超过10000个,会出现异常的折线图效果。请问这是否为bug?能否配置该阈值?

代码示例

import numpy as np
import pandas as pd
import hvplot.pandas

N=1001
Range = 10
DF = []
for n in range(Range):
    x = np.linspace(0.0, 6.4, num=N)
    y = np.sin(x) + n/10
    df = pd.DataFrame({'x': x, 'y': y})
    df['#'] = n 
    DF.append(df)

DF = pd.concat(DF)
print(f'param number= {N*Range}')
DF.hvplot.explorer(x='x', y='y', by = ['#'], kind='line')

效果对比

  • 数据点数量小于10000时的折线图:
    数据点小于10000时的折线图

  • 数据点数量大于10000时的折线图:
    数据点大于10000时的折线图


这是不是Bug?

不是Bug,这是hvplot底层依赖的Holoviews库的自动下采样机制导致的。为了避免大量数据点渲染时出现性能瓶颈,Holoviews默认会对超过10000个的数据点进行下采样处理,从而导致折线图出现失真、阶梯状的异常效果。

如何配置阈值或禁用采样?

可以通过以下几种方式调整或关闭这个采样逻辑:

1. 全局修改采样阈值

在代码开头添加Holoviews的配置,将采样阈值设置为你需要的数值(例如20000):

import holoviews as hv
# 设置折线图的采样阈值为20000
hv.opts.defaults(hv.opts.Line(sampling=20000))

2. 单个绘图任务单独设置

在调用hvplot.explorer时,通过opts参数指定当前折线图的采样参数:

DF.hvplot.explorer(
    x='x', y='y', by=['#'], kind='line',
    opts={'Line': {'sampling': 20000}}  # 针对当前图表设置阈值
)

3. 完全禁用下采样

如果需要完整展示所有数据点,直接将sampling参数设置为None即可:

# 全局禁用所有折线图的下采样
import holoviews as hv
hv.opts.defaults(hv.opts.Line(sampling=None))

# 或者仅针对当前绘图禁用
DF.hvplot.explorer(
    x='x', y='y', by=['#'], kind='line',
    opts={'Line': {'sampling': None}}
)

补充说明

自动下采样是Holoviews的默认性能优化策略,目的是在数据量较大时平衡渲染速度和图表可读性。如果你的硬件性能充足,或者需要精确展示每一个数据点,调整或禁用该参数即可解决问题。

内容的提问来源于stack exchange,提问作者user1889297

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:33:27