{"_id":"@blueking/bk-down-sample","_rev":"3-1066230f7ca0f1591d9232ce2fbe6dbd","name":"@blueking/bk-down-sample","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@blueking/bk-down-sample","version":"1.0.0","keywords":["降采样","chart.js 降采样插件"],"author":"","license":"ISC","_id":"@blueking/bk-down-sample@1.0.0","maintainers":[{"name":"blueking","email":"contactus_bk@tencent.com"}],"dist":{"shasum":"76616121857e03586abfb12011eeba19c5a7818b","tarball":"https://registry.npmjs.org/@blueking/bk-down-sample/-/bk-down-sample-1.0.0.tgz","fileCount":9,"integrity":"sha512-q+wqCVHz5T4A5UK40ETOiNXlyRCTiEBXScuc9ShMqN12lkhli8fCzm3fFihII0ACvfp/CgI+POCGOWvEbneZtw==","signatures":[{"sig":"MEUCIQC1Z3xv2grYp8wc1K/jwZf9TZClt1RgyJjoBlDvQGVMngIgEYzB6sY3E8d+FV/ImeJfQXhpKQB+Z6CZDKBUsZBgo4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu//wCRA9TVsSAnZWagAAwDYP/Rp0W++VjKrlA6pipYtL\nHssyUwW9KhCmx/73QaeqN2+jkKFlcc0JIQwtYuHQlJE0UHpj9Sf2RQaHJUft\nmSYzlwK3OyYA1AKI6yLRUJZcSzM/Ku3oT+eB4M21HQkziQ/r31g+1XLtir9r\nEnnkHmtLNnYDl4VqsgDlYGYDzWJjTotPzBSJ4XEcqsmMzLBpPwXgkcsJa3Pi\nqRWKMFClBVA5i4mMIOBqy7RFNPPRj0qB8A+j3AnC7Zr/n0t8W8+gO2F/jDJF\nkBlGMV/PSedpGB6viXvy+LuOX461CRR4iyYOJtjGQCZ6oXflXODFmLGZQ6X1\nB0CyhRcue7G78jYhwiPfPTOk7DUVeOJCiID/evSRGivQmbSetm4uO80dMYWD\n0FWjxcB6INunwlj7UuFTWzYw4pd1h8ekch9a7gIWPGUN5mp65q95UXi4fTuZ\nVBAFqPzmYtIATlGjLS+fK31Gzl4HRr92Ifl9guALUIIJ20FdJsfEd6vsp6L2\n0jAduqaENkKY2Yn2Y54bF6+2ij5LctXMfO3cn9Ej13GjkDbRBTwNCQRilOG+\nM2c7fncdzjQG9yjiv+Ssm5F47hwXxJI/wptsKf+wZY1qhPrUg9/Nis2qQk1f\nPj7sP+0wx5avWgNiC0ZwUZdbLrm21QGinzroo2WRJtEKcc5QRQGiX/R5uy2X\nAH2J\r\n=c2xQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"blueking","email":"contactus_bk@tencent.com"},"_npmVersion":"7.20.0","description":"时序大数据降采样方案","directories":{},"_nodeVersion":"14.15.3","dependencies":{"moment":"2.22.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bk-down-sample_1.0.0_1639710704602_0.7756243064113633","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-12-17T03:11:44.455Z","modified":"2026-01-15T04:03:33.331Z","1.0.0":"2021-12-17T03:11:44.774Z"},"license":"ISC","keywords":["降采样","chart.js 降采样插件"],"description":"时序大数据降采样方案","maintainers":[{"email":"contactus_bk@tencent.com","name":"blueking-magicbox"}],"readme":"# @blueking/bk-down-sample\n\n\n\n\n#### 可针对时序大数据场景下，一种内置静态，多线程快捷降采样的方案，内置chart.js 采样插件， web worker等。 \n\n\n\n插件提供了什么功能 ？\n\n1. 采样算法:\n\n- 平均采样\n\n- LTTB 最大三角形三个桶\n\n2. 采样方式\n\n- 给发采样阀值返回采样阀值的数据条数\n\n- 在图表频繁绘制，例如分辨率变化等场景下，提供```mipmap```结构，可根据图表分辨率动态下采样折线图数据。从折线图数据创建类似 ```mipmap``` 的数据结构，并根据图表分辨率和 x 轴比例动态选择数据的下采样版本。\n\n3. 可扩展内置的 web worker 采样方案\n可直接引入插件中的 openWorker 函数直接开启单独线程处理采样数据，而不影响主进程渲染\n\n4. 提供chart.js 采样插件，统一全部配置，完全继承所有采样api，只需要注册插件，开启配置，所有采样方法都在内部实现。\n\n5. 纯静态采样api\n\n所有的采样api函数 都封装在统一的静态类中，可只引用采样类传递配置项和数据，即可在任何场景下进行采样。\n\n\n\n### 配置\n\n```\n  // 开启采样\n  enabled: true, \n  // openMipMap 为false 情况下当数据出现变化是否自动采样表识\n  auto: true, \n  // 是否外部提前使用web worker 进行数据采样，开启时再 init生命周期内不会对数据进行采样\n  initWork: false, \n  // 开启 mipMap 结构采样\n  openMipMap: false, \n  // 重置为原数据\n  restoreOriginalData: false, \n  // 数据点之间所需的最小距离（以像素为单位）。默认值：1 像素\n  desiredDataPointDistance: 1, \n  // 最少数量的数据点。限制\n  minNumPoints: 100,\n  // 剔除数据到 x 比例的显示范围， 当出现缩放时，数据变化过程中对数据进行二次过滤，剔除小于或者大于 展示区的值\n  cullData: true,\n  // openMipMap 为false的情况 该值为true 会在每次采样渲染结束后将采样数据重置为原始数据\n  preferOriginalData: false\n```\n\n\n### 使用\n\nchart.js 使用\n\n```\n // 全局注册\n import Chart from 'charts.js';\n import register from '@blueking/bk-down-sample'\n register(Chart)\n\n\n // 局部注册\n import chart-plugin-down-sample from '@blueking/bk-down-sample/lib/chart-plugin-down-sample'\n\n options: {\n   plugins: {\n     downSample: chart-plugin-down-sample\n   }\n }\n```\n\n\n静态使用\n\n```\n import sampleUtils from '@blueking/bk-down-sample/lib/sampleUtils'\n\n sampleUtils.createSample(data, options)\n\n // 直接调用采样方法 \n sampleUtils.createData(data, options)\n sampleUtils.createDataMipMap(data, options)\n sampleUtils.downSample(data, minNumPoints)\n ...\n```\n\nweb worker\n\n```\n 使用 webpack 将 @blueking/bk-down-sample/lib/sampleWorker.js 打包到项目中\n 然后将打包后的文件地址传入到 openWorker 函数中开启默认的worker\n import openWorker from '@blueking/bk-down-sample/lib/openWorker'\n\n const createSample = openWorker(url)\n\n createSample(data, options, (data) => {\n   console.log(data)\n   new Charts(context, {\n     ...\n   })\n })\n\n\n```\n自定义web worker\n```\n 使用 webpack 将 @blueking/bk-down-sample/lib/sampleWorker.js 打包到项目中\n 然后将打包后的文件地址传入到 openWorker 函数中开启默认的worker\n const work = new Worker(url);\n // 通信格式固定\n work.postMessage({ eventName: 'downSample', datasets: data, options  });\n\n  work.addEventListener('message', (e) => {\n    // 自定义处理\n  });\n```","readmeFilename":"README.md"}