@damoqiongqiu/ice-chart 0.30.16 → 0.30.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -117,7 +117,7 @@ gray-100~900、`--bs-border-radius`、`--bs-body-font-family`),图表放进
117
117
  | --- | --- | --- |
118
118
  | 系列类型 | line / area / bar(含横向)/ scatter(含气泡)/ pie(含环形、玫瑰)/ radar / heatmap / **hexbin(蜂窝分箱)** / sankey / **alluvial(多轴分类流)** / funnel / gauge / boxplot / **violin(含半宽)/ beeswarm** / waterfall / treemap / graph / **calendar(日历热力)** / function / parametric | 见下方「图表类型与写法」 |
119
119
  | 比例尺 | linear / category / time / log | time 轴按跨度自动切换毫秒~年粒度 |
120
- | 坐标系 | 直角坐标 / 极坐标(饼图) / 雷达 / 桑基图 | 按系列类型自动切换场景 |
120
+ | 坐标系 | 直角坐标 / 极坐标(饼图)/ 雷达 / 桑基 / 漏斗 / 仪表盘 / 水位球 / 树图 / 关系图 / 日历 / 多轴分类流 | 按系列类型自动切换场景,即 `normalizeOption` 返回的 `norm.kind`(11 个场景) |
121
121
  | 坐标轴 | x + **多 y 轴**(左右可配) | 刻度、网格、轴名、标签旋转与自动抽稀、自定义 formatter、**数据域留白 `padding`(默认 5%)** |
122
122
  | 面板矩阵(小倍数) | `matrix: { rows, columns, gap }` + `series[].panel` | 一张画布 N 个同构面板,**共享数据域**;轴只画外圈,悬停 / 框选 / 缩放按**指针所在面板**解析;`columns: [4, 1]` 的权重即「主图 + 窄条」。不给 `matrix` 时行为逐像素不变 |
123
123
  | 图例 | top / bottom / left / right | **可点击切换系列 / 扇区显隐**并重算数据域 |
@@ -126,8 +126,8 @@ gray-100~900、`--bs-border-radius`、`--bs-body-font-family`),图表放进
126
126
  | 悬停高亮 | 圆环 / 柱形描边 | 可配置 `dimOthers` 压暗其他系列 |
127
127
  | 选中 | single / multiple | 点击或键盘 Enter,抛出 `select:change` |
128
128
  | 框选 | x / y / xy,select / zoom 两种模式 | 拖拽出选区,实时抛 `brush:change` |
129
- | 缩放 | 滚轮(data / viewport 两种模式) | 以指针位置为锚点,可配置 `minSpan / maxSpan` |
130
- | 平移 | 拖拽 | 自动约束在完整数据域内 |
129
+ | 缩放 | 滚轮(data / viewport 两种模式)+ **dataZoom 滑块** | 以指针位置为锚点,可配置 `minSpan / maxSpan`;滑块有横(底部,管 x 窗口)与**竖直**(绘图区右侧,管 y 窗口,`dataZoom.sliderY`,默认关)两条 |
130
+ | 平移 | 拖拽(`data` / `viewport` 两种模式) | `data`(默认)改数据域、自动约束在完整数据域内;`viewport` 平移**画布视图**(`pan.mode: 'viewport'`,配 `zoom.mode: 'viewport'`)—— 没有坐标轴的场景(力导向图 / 关系图)走这条 |
131
131
  | 键盘导航 | ←/→ 移动数据点,↑/↓ 切换系列 | Enter 选中,Esc 清空;只由最后激活的图表响应 |
132
132
  | 跨图联动 | hover / zoom / brush | `linkCharts([a, b])`,按 x 数据值对齐 |
133
133
  | 动画 | 进入与数据更新 | 走引擎的 `AnimationManager`(`state.progress` 驱动) |
@@ -198,7 +198,7 @@ gray-100~900、`--bs-border-radius`、`--bs-body-font-family`),图表放进
198
198
  | `gauge` | `gauge: { min, max, axisLineColor }` + `data: [{ name, value }]` | 指针随数值转动,轴线按阈值分段配色 |
199
199
  | `sankey` | `sankey: { nodes, links }` | 分层 + 纵向松弛布局,节点/连线分别命中 |
200
200
  | `treemap` | `data: [{ name, value, children }]` | squarified 布局,父节点留标题带;命中返回最深节点 |
201
- | `graph` | `graph: { nodes, links }` | 力导向布局(无底图),节点可拖拽重排;按分类配色、按权重定大小 |
201
+ | `graph` | `graph: { nodes, links }` | 力导向布局(无底图),节点可拖拽重排;**按关系量定大小**(节点写 `value: 1` 才开这个开关)。标签**自己找位置**:先下方、贴底翻上方、与别的标签相撞就挪到左右侧,最后才选撞得最少的一侧 —— 所以密集图也能给每个节点都标名字(`graph.label.minSize` 可按需只标主要节点),标签也不会被画布裁掉。**配色三个覆盖口**:`categories[].color`(分类色)/ `nodes[].color`(单点)/ `links[].color`(单条线);连线**不写颜色时继承源节点颜色**,多分类图想让它「只表达关系类型」就逐条给 `links[].color` |
202
202
  | `function` | `expression: 'sin(x)/x'`(+ `params` / `domain` / `samples` / `adaptive`) | 迷你 MATLAB:直接写表达式画 `y = f(x)`,按可视区间重采样、y 轴自动贴合;默认**自适应细分**,`adaptive: false` 才是均匀采样 |
203
203
  | `parametric` | `xExpression: 'sin(3*t)'` + `yExpression: 'cos(2*t)'` | 参数曲线(李萨如 / 螺线 / 心形线);自变量是 `t` |
204
204
  | `parametric`(极坐标) | `polarExpression: 'cos(3*t)'` + `polarGrid: true` | 极坐标 `r(θ)`(玫瑰线 / 心形线 / 螺线),配 `aspect: 'equal'` 出 MATLAB `polarplot` 观感 |
@@ -566,12 +566,17 @@ npm run examples:serve # http://localhost:5177
566
566
  ```
567
567
 
568
568
  示例页面覆盖:基础折线 / 面积、分组与堆叠柱形、多 y 轴叠加、饼图 / 环形图 / 玫瑰图、雷达图、
569
- 热力图、桑基图、交互总览(框选 + 多选 + 键盘 + 事件日志)、时间轴 + dataZoom 滑块、
569
+ 热力图、桑基图、交互总览(框选 + 多选 + 键盘 + 事件日志 + **横竖两条 dataZoom 滑块**)、
570
+ 时间轴 + dataZoom 滑块、
570
571
  分布组图(小提琴 / 蜂群 / 箱线叠成的雨云图)、
571
572
  面板矩阵(小倍数:2×3 共享比例尺 + 主图/窄条权重)、
572
573
  六边形分箱(点云聚成蜂窝格,细格/粗格对照)、
573
574
  边际分布(主图 + 轴侧直方图,matrix 权重 + 第二个 y 轴共享 x 域)、
574
575
  日历热力(一行一天,UTC 日期语义 + 常数时间命中)、多轴分类流(表的分面:N 轴 + 流量带)、
576
+ **力导向关系图(《红楼梦》人物关系:189 人 / 266 条关系,1560×960 画布,**189 个名字全都标出来且互不重叠**;
577
+ **配色按规则**(节点 = 与贾家的关系:主家两府 / 姻亲四家同一色相按往来排明度 / 亲眷与外人灰阶;
578
+ 连线 = 关系类型:血脉 / 姻缘与情感 / 主仆与师承 / 交游,粗细 = 亲疏,页面带图例);
579
+ 滚轮缩放画布、拖空白处平移、拖节点单独挪它且不再触发自动布局)**、
575
580
  大数据量(5 万点降采样 / **100 万点列存虚拟化:散点 + 折线**)、无障碍、跨图联动、迷你 MATLAB,以及 **5 个深色大屏**
576
581
  (运营 / 设备 / 能源 / 物流 / 函数实验)。
577
582
 
@@ -669,20 +674,32 @@ node scripts/audit-space.mjs # 104 张示例图:直角坐标占宽 ≥
669
674
 
670
675
  ## 路线图
671
676
 
672
- 已落地:极坐标(饼图 / 玫瑰图)、雷达图、多 y 轴、dataZoom 滑块、LTTB 降采样与二分命中、
673
- **列存(虚拟)系列**(百万级散点,`virtual: true`)、无障碍(数据表镜像 + 播报)、
674
- 热力图、桑基图、标注(目标线 / 异常点 / 目标区间)。
675
-
676
- 后续候选:
677
-
678
- - 桑基节点拖拽重排与折叠(布局已与渲染解耦,扩展成本低)
679
- - 数据 append 的增量绘制(当前是全量重建像素缓存;列存 + 环形缓冲是它的落地路径)
680
- - 把列存推广到折线 / 面积与热力图(模板与边界见 `docs/10-column-store-virtual-series.md`)
681
- - y 轴方向的 dataZoom 滑块(`setAxisDomain` 已可用,缺 UI)
682
- - 标注的第二梯队:树图 / 日历热力(层级与时间热力的标配)、趋势线与误差棒(按需;
683
- 冷门形态走自定义系列注册口)
684
- - 地图**明确不做**(地理数据 + 投影 + 交互是另一个体量;关系数据用力导向关系图表达,
685
- 需要地图的应用走自定义系列注册口)
677
+ **这一节只回答「还没做什么」。** 「已经有什么」以 [能力清单](#能力清单) 与
678
+ [图表类型与写法](#图表类型与写法) 为准;纪律条目与「已实现 / 未实现」的单一来源是
679
+ [`AGENTS.md`](./AGENTS.md),施工图在 [`plans/`](./plans)(性能那条是 `plans/incremental-pipeline.md`)。
680
+ 同一份清单抄成三份的结果就是各自过期 —— 比如「把列存推广到折线 / 面积与热力图」在这里挂了一阵子,
681
+ 而它早已落地(列存折线与列存热力矩阵见上面的「图表类型与写法」与
682
+ [机制与复用边界](./docs/10-column-store-virtual-series.md))。
683
+
684
+ 还没做:
685
+
686
+ - **增量绘制**:`appendData` 现在每次都全量重建像素缓存(列存 + 环形缓冲是它的落地路径);
687
+ 归一化 / 布局 / 组件同步的增量是 `plans/incremental-pipeline.md` 里的 P1~P3,
688
+ 验收线「10 万根窗口 ≤ 0.5 ms/tick」仍未达到。
689
+ - **桑基节点拖拽重排与折叠**(布局已与渲染解耦,扩展成本低)。
690
+ - **标注的第二梯队**:非直角坐标系里的标注(树图 / 日历热力 / 雷达 …)——
691
+ 目前标注只在直角坐标场景生效,其它场景会给出 `annotation:unsupported-scene` 警告并整批跳过;
692
+ 另有趋势线与误差棒(按需)。
693
+ - **隐函数 / 等值线**(`f(x, y) = 0`,需要 marching squares):属 B 档,要做就另开一个包,
694
+ 不进核心库。
695
+
696
+ 明确不做:
697
+
698
+ - **地图 / 地理**:地理数据 + 投影 + 交互是另一个体量。关系数据用力导向关系图表达;
699
+ 需要地图的应用走 `registerSeriesType()` 自定义系列口。
700
+ - **3D**:引擎能力之外,另立项目才成立。
701
+ - **K 线 / 交易语义、甘特 / 排期、建模类图示(ER / 流程 / BPMN / UML / 状态机…)**:
702
+ 由家族里专门的包承担(它们挂在本库之上,本库不感知);冷门形态一律走自定义系列注册口。
686
703
 
687
704
  ## License
688
705