@loom-framework/core 0.1.0-alpha.84 → 0.1.0-alpha.86
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/builtin-skills/antd/SKILL.md +266 -0
- package/builtin-skills/antv-g2-chart/SKILL.md +1067 -0
- package/builtin-skills/antv-g2-chart/references/animations/g2-animation-intro.md +176 -0
- package/builtin-skills/antv-g2-chart/references/animations/g2-animation-keyframe.md +149 -0
- package/builtin-skills/antv-g2-chart/references/animations/g2-animation-types.md +253 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-annotation.md +237 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-config.md +648 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-radar.md +219 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-label-config.md +174 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-category.md +278 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-config.md +363 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-continuous.md +264 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-scrollbar.md +276 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-slider.md +333 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-title.md +149 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-tooltip-config.md +358 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-circle.md +97 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-rect.md +241 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geo-map.md +210 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geoview.md +143 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-repeat-matrix.md +171 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-flex.md +142 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-layer.md +149 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-timing-keyframe.md +91 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-view.md +309 -0
- package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-chart-selection.md +235 -0
- package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-color-theory.md +287 -0
- package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-visual-channels.md +180 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-cartesian.md +131 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-fisheye.md +131 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-helix.md +141 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-parallel.md +129 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-polar.md +143 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-radial.md +214 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-theta.md +171 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-transpose.md +195 -0
- package/builtin-skills/antv-g2-chart/references/core/g2-core-chart-init.md +266 -0
- package/builtin-skills/antv-g2-chart/references/core/g2-core-encode-channel.md +197 -0
- package/builtin-skills/antv-g2-chart/references/core/g2-core-view-composition.md +224 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-ema.md +190 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-fetch.md +167 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-filter.md +212 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-fold.md +260 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-format-tabular.md +280 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-kde.md +426 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-log.md +140 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-slice.md +147 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-sort.md +251 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-sortby.md +183 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-transform-patterns.md +394 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-adaptive-filter.md +118 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-axis.md +112 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-filter.md +122 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-x-y-highlight.md +127 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-xy.md +118 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush.md +184 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-filter.md +170 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-highlight.md +186 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-filter.md +170 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-highlight.md +185 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-chart-index.md +127 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-drilldown.md +149 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight-by.md +125 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight.md +235 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-hover-scale.md +109 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-point-move.md +152 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select-by.md +133 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select.md +249 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-fisheye.md +117 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-filter.md +130 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-highlight.md +130 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-poptip.md +105 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-scrollbar-filter.md +144 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-filter.md +231 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-wheel.md +138 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-tooltip.md +192 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-treemap-drilldown.md +152 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-contrast-reverse.md +170 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-exceed-adjust.md +146 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-hide.md +185 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-stroke.md +147 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-dodge-y.md +225 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-hide.md +213 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-diagram.md +196 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-donut.md +148 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-pie.md +212 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-basic.md +168 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-stacked.md +150 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-beeswarm.md +134 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bi-directional-bar.md +297 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-box-boxplot.md +163 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-boxplot.md +340 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bullet.md +203 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-cell-heatmap.md +370 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-chord.md +341 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-connector.md +126 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-contourline.md +243 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-density.md +457 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-distribution-curve.md +298 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-funnel.md +329 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gantt.md +208 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gauge.md +247 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-heatmap.md +130 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-histogram.md +186 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-image.md +129 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-basic.md +528 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-grouped.md +161 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-normalized.md +147 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-stacked.md +183 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-k-chart.md +237 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-basic.md +353 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-multi.md +156 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-linex-liney.md +176 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-link.md +134 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-liquid.md +125 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-mosaic.md +257 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-pack.md +424 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-parallel.md +195 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-partition.md +275 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-path.md +135 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-bubble.md +138 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-scatter.md +177 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-polygon.md +130 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radar.md +231 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radial-bar.md +226 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-range-rangey.md +253 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rangex.md +293 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rect.md +115 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-regression-curve.md +276 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rose.md +182 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sankey.md +217 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-shape.md +160 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-spiral.md +257 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sunburst.md +327 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-text.md +309 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-tree.md +235 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-treemap.md +426 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-vector.md +108 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-venn.md +204 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-violin.md +307 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-wordcloud.md +155 -0
- package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category10.md +196 -0
- package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category20.md +238 -0
- package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-performance.md +181 -0
- package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-responsive.md +232 -0
- package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-v4-to-v5.md +223 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-band.md +127 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-linear.md +259 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-log.md +226 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-ordinal.md +135 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-point.md +242 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-pow-sqrt.md +124 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-quantile-quantize.md +119 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-sequential.md +267 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-threshold.md +133 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-time.md +159 -0
- package/builtin-skills/antv-g2-chart/references/themes/g2-theme-builtin.md +192 -0
- package/builtin-skills/antv-g2-chart/references/themes/g2-theme-custom.md +183 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-bin.md +153 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-binx.md +133 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-diffy.md +130 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-dodgex.md +90 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-flexx.md +115 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-group.md +233 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupcolor.md +182 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupx.md +265 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupy.md +167 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitter.md +149 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitterx.md +177 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jittery.md +177 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-normalizey.md +83 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-pack.md +164 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sample.md +143 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-select.md +147 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selectx.md +179 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selecty.md +179 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sort-color.md +115 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sortx.md +285 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sorty.md +117 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stack-enter.md +158 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stacky.md +218 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-symmetryy.md +122 -0
- package/builtin-skills/chart-visualization/SKILL.md +101 -0
- package/{templates/loom-skill → builtin-skills/loom}/SKILL.md +20 -9
- package/{templates/loom-skill → builtin-skills/loom}/references/README.md +3 -3
- package/dist/capability-generator.d.ts +1 -1
- package/dist/capability-generator.js +3 -3
- package/dist/capability-generator.js.map +1 -1
- package/dist/cli/commands/generate-dashboard.d.ts.map +1 -1
- package/dist/cli/commands/generate-dashboard.js +12 -6
- package/dist/cli/commands/generate-dashboard.js.map +1 -1
- package/dist/cli/commands/generate-page.d.ts.map +1 -1
- package/dist/cli/commands/generate-page.js +1 -163
- package/dist/cli/commands/generate-page.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +57 -295
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/generators/capability-generator.d.ts +35 -0
- package/dist/cli/generators/capability-generator.d.ts.map +1 -0
- package/dist/cli/generators/capability-generator.js +115 -0
- package/dist/cli/generators/capability-generator.js.map +1 -0
- package/dist/cli/helpers/column-template.d.ts +18 -0
- package/dist/cli/helpers/column-template.d.ts.map +1 -0
- package/dist/cli/helpers/column-template.js +151 -0
- package/dist/cli/helpers/column-template.js.map +1 -0
- package/dist/cli/helpers/field-template.d.ts +4 -0
- package/dist/cli/helpers/field-template.d.ts.map +1 -1
- package/dist/cli/helpers/field-template.js +4 -3
- package/dist/cli/helpers/field-template.js.map +1 -1
- package/dist/cli/templates/backend-entry.d.ts +5 -0
- package/dist/cli/templates/backend-entry.d.ts.map +1 -0
- package/dist/cli/templates/backend-entry.js +17 -0
- package/dist/cli/templates/backend-entry.js.map +1 -0
- package/dist/cli/templates/frontend-entry.d.ts +11 -0
- package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
- package/dist/cli/templates/frontend-entry.js +77 -0
- package/dist/cli/templates/frontend-entry.js.map +1 -0
- package/dist/cli/templates/gitignore.d.ts +5 -0
- package/dist/cli/templates/gitignore.d.ts.map +1 -0
- package/dist/cli/templates/gitignore.js +13 -0
- package/dist/cli/templates/gitignore.js.map +1 -0
- package/dist/cli/templates/index.d.ts +12 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +12 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/templates/loom-config.d.ts +10 -0
- package/dist/cli/templates/loom-config.d.ts.map +1 -0
- package/dist/cli/templates/loom-config.js +31 -0
- package/dist/cli/templates/loom-config.js.map +1 -0
- package/dist/cli/templates/package-json.d.ts +9 -0
- package/dist/cli/templates/package-json.d.ts.map +1 -0
- package/dist/cli/templates/package-json.js +40 -0
- package/dist/cli/templates/package-json.js.map +1 -0
- package/dist/cli/templates/readme.d.ts +9 -0
- package/dist/cli/templates/readme.d.ts.map +1 -0
- package/dist/cli/templates/readme.js +47 -0
- package/dist/cli/templates/readme.js.map +1 -0
- package/dist/cli/templates/tsconfig.d.ts +6 -0
- package/dist/cli/templates/tsconfig.d.ts.map +1 -0
- package/dist/cli/templates/tsconfig.js +41 -0
- package/dist/cli/templates/tsconfig.js.map +1 -0
- package/dist/cli/templates/vite-config.d.ts +5 -0
- package/dist/cli/templates/vite-config.d.ts.map +1 -0
- package/dist/cli/templates/vite-config.js +24 -0
- package/dist/cli/templates/vite-config.js.map +1 -0
- package/dist/commands.d.ts +1 -5
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +0 -11
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts +15 -122
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -52
- package/dist/config.js.map +1 -1
- package/dist/dashboard-config.d.ts +117 -0
- package/dist/dashboard-config.d.ts.map +1 -0
- package/dist/dashboard-config.js +59 -0
- package/dist/dashboard-config.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server-bin.js +30 -62
- package/dist/server-bin.js.map +1 -1
- package/dist/types/adapter.d.ts +28 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +5 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/ai.d.ts +52 -0
- package/dist/types/ai.d.ts.map +1 -0
- package/dist/types/ai.js +5 -0
- package/dist/types/ai.js.map +1 -0
- package/dist/types/chat.d.ts +46 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +5 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/command.d.ts +25 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +5 -0
- package/dist/types/command.js.map +1 -0
- package/dist/types/config.d.ts +30 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/dashboard.d.ts +42 -0
- package/dist/types/dashboard.d.ts.map +1 -0
- package/dist/types/dashboard.js +5 -0
- package/dist/types/dashboard.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/model.d.ts +59 -0
- package/dist/types/model.d.ts.map +1 -0
- package/dist/types/model.js +5 -0
- package/dist/types/model.js.map +1 -0
- package/dist/types.d.ts +4 -250
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -3
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- /package/{templates → builtin-skills}/app-skill/SKILL.md +0 -0
- /package/{templates → builtin-skills}/app-skill/references/data-semantics.md +0 -0
- /package/{templates → builtin-skills}/app-skill/references/models.md +0 -0
- /package/{templates/loom-skill → builtin-skills/loom}/references/dashboard.md +0 -0
- /package/{templates/loom-skill → builtin-skills/loom}/references/data-model.md +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-pack"
|
|
3
|
+
title: "G2 Pack Transform"
|
|
4
|
+
description: |
|
|
5
|
+
打包布局 Transform,将多个图形元素均匀排列避免重叠。
|
|
6
|
+
常用于 Treemap、气泡图等需要自动布局的场景。
|
|
7
|
+
|
|
8
|
+
library: "g2"
|
|
9
|
+
version: "5.x"
|
|
10
|
+
category: "transforms"
|
|
11
|
+
tags:
|
|
12
|
+
- "打包"
|
|
13
|
+
- "pack"
|
|
14
|
+
- "布局"
|
|
15
|
+
- "防重叠"
|
|
16
|
+
- "网格"
|
|
17
|
+
|
|
18
|
+
related:
|
|
19
|
+
- "g2-mark-pack"
|
|
20
|
+
- "g2-mark-treemap"
|
|
21
|
+
|
|
22
|
+
use_cases:
|
|
23
|
+
- "多个图形元素的自动排列"
|
|
24
|
+
- "小多图网格布局"
|
|
25
|
+
- "避免图形重叠"
|
|
26
|
+
|
|
27
|
+
anti_patterns:
|
|
28
|
+
- "单个图形不需要打包"
|
|
29
|
+
- "已有明确位置信息的数据"
|
|
30
|
+
|
|
31
|
+
difficulty: "intermediate"
|
|
32
|
+
completeness: "full"
|
|
33
|
+
created: "2025-03-26"
|
|
34
|
+
updated: "2025-03-26"
|
|
35
|
+
author: "antv-team"
|
|
36
|
+
source_url: "https://g2.antv.antgroup.com/manual/core/transform"
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 核心概念
|
|
40
|
+
|
|
41
|
+
Pack Transform 通过变换(translate + scale)将多个图形元素均匀排列,避免重叠。它会自动计算每个元素的位置和缩放比例。
|
|
42
|
+
|
|
43
|
+
**工作原理:**
|
|
44
|
+
1. 计算每个元素的边界框
|
|
45
|
+
2. 根据容器尺寸计算网格布局
|
|
46
|
+
3. 对每个元素应用 translate 和 scale 变换
|
|
47
|
+
|
|
48
|
+
## 最小可运行示例
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
import { Chart } from '@antv/g2';
|
|
52
|
+
|
|
53
|
+
const chart = new Chart({
|
|
54
|
+
container: 'container',
|
|
55
|
+
width: 640,
|
|
56
|
+
height: 480,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
chart.options({
|
|
60
|
+
type: 'pack',
|
|
61
|
+
{
|
|
62
|
+
nodes: [
|
|
63
|
+
{ name: 'A', value: 100 },
|
|
64
|
+
{ name: 'B', value: 80 },
|
|
65
|
+
{ name: 'C', value: 60 },
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
encode: {
|
|
69
|
+
value: 'value',
|
|
70
|
+
color: 'value',
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
chart.render();
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 常用变体
|
|
78
|
+
|
|
79
|
+
### 作为 Transform 使用
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
chart.options({
|
|
83
|
+
type: 'interval',
|
|
84
|
+
data,
|
|
85
|
+
encode: { x: 'category', y: 'value' },
|
|
86
|
+
transform: [
|
|
87
|
+
{
|
|
88
|
+
type: 'pack',
|
|
89
|
+
padding: 5, // 元素间距
|
|
90
|
+
direction: 'col', // 排列方向: 'col' | 'row'
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 自定义间距
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
chart.options({
|
|
100
|
+
type: 'pack',
|
|
101
|
+
data,
|
|
102
|
+
encode: { value: 'value', color: 'value' },
|
|
103
|
+
transform: [
|
|
104
|
+
{
|
|
105
|
+
type: 'pack',
|
|
106
|
+
padding: 10, // 元素之间的间距
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 按行排列
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
chart.options({
|
|
116
|
+
type: 'pack',
|
|
117
|
+
data,
|
|
118
|
+
encode: { value: 'value', color: 'value' },
|
|
119
|
+
transform: [
|
|
120
|
+
{
|
|
121
|
+
type: 'pack',
|
|
122
|
+
direction: 'row', // 按行排列
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 完整类型参考
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
interface PackTransform {
|
|
132
|
+
type: 'pack';
|
|
133
|
+
padding?: number; // 元素间距,默认 0
|
|
134
|
+
direction?: 'col' | 'row'; // 排列方向,默认 'col'
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 与 Pack Mark 的关系
|
|
139
|
+
|
|
140
|
+
Pack Mark 内部使用 Pack Transform 进行布局:
|
|
141
|
+
- **Pack Mark**:用于创建圆形打包图(Circle Packing)
|
|
142
|
+
- **Pack Transform**:用于任意图形元素的网格排列
|
|
143
|
+
|
|
144
|
+
## 常见错误与修正
|
|
145
|
+
|
|
146
|
+
### 错误 1:padding 值过大
|
|
147
|
+
|
|
148
|
+
```javascript
|
|
149
|
+
// ❌ 错误:padding 过大会导致元素被过度压缩
|
|
150
|
+
transform: [{ type: 'pack', padding: 50 }]
|
|
151
|
+
|
|
152
|
+
// ✅ 正确:合理的 padding 值
|
|
153
|
+
transform: [{ type: 'pack', padding: 5 }]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 错误 2:direction 参数错误
|
|
157
|
+
|
|
158
|
+
```javascript
|
|
159
|
+
// ❌ 错误
|
|
160
|
+
transform: [{ type: 'pack', direction: 'horizontal' }]
|
|
161
|
+
|
|
162
|
+
// ✅ 正确
|
|
163
|
+
transform: [{ type: 'pack', direction: 'row' }]
|
|
164
|
+
```
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-sample"
|
|
3
|
+
title: "G2 Sample 数据采样变换"
|
|
4
|
+
description: |
|
|
5
|
+
sample 变换在数据超过阈值(默认 2000 条)时自动对数据降采样,
|
|
6
|
+
避免大数据集渲染过慢或视觉过于密集。
|
|
7
|
+
支持 first、last、min、max、median、lttb(最大三角形,保留趋势)等多种策略。
|
|
8
|
+
|
|
9
|
+
library: "g2"
|
|
10
|
+
version: "5.x"
|
|
11
|
+
category: "transforms"
|
|
12
|
+
tags:
|
|
13
|
+
- "sample"
|
|
14
|
+
- "采样"
|
|
15
|
+
- "大数据"
|
|
16
|
+
- "性能优化"
|
|
17
|
+
- "lttb"
|
|
18
|
+
- "降采样"
|
|
19
|
+
- "transform"
|
|
20
|
+
|
|
21
|
+
related:
|
|
22
|
+
- "g2-mark-line-basic"
|
|
23
|
+
- "g2-transform-filter"
|
|
24
|
+
|
|
25
|
+
use_cases:
|
|
26
|
+
- "折线图数据超过 2000 条时保留视觉趋势的采样"
|
|
27
|
+
- "实时数据流的性能优化"
|
|
28
|
+
- "股票K线等大时间序列可视化"
|
|
29
|
+
|
|
30
|
+
difficulty: "intermediate"
|
|
31
|
+
completeness: "full"
|
|
32
|
+
created: "2025-03-24"
|
|
33
|
+
updated: "2025-03-24"
|
|
34
|
+
author: "antv-team"
|
|
35
|
+
source_url: "https://g2.antv.antgroup.com/manual/core/transform/sample"
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 最小可运行示例
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
import { Chart } from '@antv/g2';
|
|
42
|
+
|
|
43
|
+
// 模拟 5000 条时间序列数据
|
|
44
|
+
const data = Array.from({ length: 5000 }, (_, i) => ({
|
|
45
|
+
time: new Date(2020, 0, 1 + Math.floor(i / 10)).toISOString(),
|
|
46
|
+
value: Math.sin(i / 50) * 100 + Math.random() * 20,
|
|
47
|
+
}));
|
|
48
|
+
|
|
49
|
+
const chart = new Chart({ container: 'container', width: 800, height: 400 });
|
|
50
|
+
|
|
51
|
+
chart.options({
|
|
52
|
+
type: 'line',
|
|
53
|
+
data,
|
|
54
|
+
encode: { x: 'time', y: 'value' },
|
|
55
|
+
transform: [
|
|
56
|
+
{
|
|
57
|
+
type: 'sample',
|
|
58
|
+
thresholds: 500, // 超过 500 条才触发采样
|
|
59
|
+
strategy: 'lttb', // 最大三角形采样,最佳保留视觉趋势
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
chart.render();
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 采样策略对比
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
// lttb(推荐):最大三角形三桶算法,视觉保真度最高
|
|
71
|
+
transform: [{ type: 'sample', strategy: 'lttb', thresholds: 500 }]
|
|
72
|
+
|
|
73
|
+
// median:取每桶中位数,平滑但可能丢失极值
|
|
74
|
+
transform: [{ type: 'sample', strategy: 'median', thresholds: 1000 }]
|
|
75
|
+
|
|
76
|
+
// min/max:保留每桶最小/最大值,适合保留极值场景
|
|
77
|
+
transform: [{ type: 'sample', strategy: 'max', thresholds: 800 }]
|
|
78
|
+
|
|
79
|
+
// first/last:取每桶第一/最后一条,性能最好但精度最低
|
|
80
|
+
transform: [{ type: 'sample', strategy: 'first', thresholds: 2000 }]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 多系列分组采样
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
// groupBy 指定分组字段,每个系列独立采样
|
|
87
|
+
chart.options({
|
|
88
|
+
type: 'line',
|
|
89
|
+
data: multiSeriesData,
|
|
90
|
+
encode: { x: 'time', y: 'value', color: 'series' },
|
|
91
|
+
transform: [
|
|
92
|
+
{
|
|
93
|
+
type: 'sample',
|
|
94
|
+
thresholds: 300,
|
|
95
|
+
strategy: 'lttb',
|
|
96
|
+
groupBy: ['series', 'color'], // 按系列分组,每组独立降采样
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 配置项
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
transform: [
|
|
106
|
+
{
|
|
107
|
+
type: 'sample',
|
|
108
|
+
strategy: 'median', // 采样策略:'first'|'last'|'min'|'max'|'median'|'lttb'|function
|
|
109
|
+
// 默认 'median'
|
|
110
|
+
thresholds: 2000, // 触发采样的数据量阈值,默认 2000
|
|
111
|
+
groupBy: ['series', 'color'], // 分组字段,默认 ['series', 'color']
|
|
112
|
+
},
|
|
113
|
+
]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 常见错误与修正
|
|
117
|
+
|
|
118
|
+
### 错误 1:thresholds 设置太高——数据虽大但不触发采样
|
|
119
|
+
```javascript
|
|
120
|
+
// ❌ 10000 条数据,thresholds 是默认的 2000,但策略不对
|
|
121
|
+
transform: [{ type: 'sample' }] // 默认 thresholds: 2000,strategy: 'median'
|
|
122
|
+
// ⚠️ 对 10000 条数据只降到 2000 条,可能还是太多
|
|
123
|
+
|
|
124
|
+
// ✅ 根据渲染目标明确设置 thresholds
|
|
125
|
+
transform: [{ type: 'sample', thresholds: 300, strategy: 'lttb' }]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 错误 2:对柱状图使用 sample——破坏完整分类
|
|
129
|
+
```javascript
|
|
130
|
+
// ❌ 柱状图采样后,某些分类会消失,视觉上有断层
|
|
131
|
+
chart.options({
|
|
132
|
+
type: 'interval',
|
|
133
|
+
encode: { x: 'category', y: 'value' },
|
|
134
|
+
transform: [{ type: 'sample' }], // ❌ 柱状图通常不需要采样
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// ✅ sample 主要用于折线图等连续数据
|
|
138
|
+
chart.options({
|
|
139
|
+
type: 'line',
|
|
140
|
+
encode: { x: 'time', y: 'value' },
|
|
141
|
+
transform: [{ type: 'sample', strategy: 'lttb' }], // ✅
|
|
142
|
+
});
|
|
143
|
+
```
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-select"
|
|
3
|
+
title: "G2 Select / SelectX / SelectY 筛选变换"
|
|
4
|
+
description: |
|
|
5
|
+
select 系列变换从分组数据中筛选出特定的数据行用于标注。
|
|
6
|
+
selectX 按 x 通道分组后筛选(常用于折线图末端标签),
|
|
7
|
+
selectY 按 y 通道分组后筛选。
|
|
8
|
+
selector 支持 'first'、'last'、'min'、'max' 等预设值或自定义函数。
|
|
9
|
+
|
|
10
|
+
library: "g2"
|
|
11
|
+
version: "5.x"
|
|
12
|
+
category: "transforms"
|
|
13
|
+
tags:
|
|
14
|
+
- "select"
|
|
15
|
+
- "selectX"
|
|
16
|
+
- "selectY"
|
|
17
|
+
- "筛选"
|
|
18
|
+
- "末端标签"
|
|
19
|
+
- "极值标注"
|
|
20
|
+
- "transform"
|
|
21
|
+
|
|
22
|
+
related:
|
|
23
|
+
- "g2-mark-line-basic"
|
|
24
|
+
- "g2-mark-text"
|
|
25
|
+
- "g2-comp-annotation"
|
|
26
|
+
|
|
27
|
+
use_cases:
|
|
28
|
+
- "在折线图末端显示最新数据标签"
|
|
29
|
+
- "标注每条线的最大值或最小值"
|
|
30
|
+
- "在特定 x 位置放置注释标签"
|
|
31
|
+
|
|
32
|
+
difficulty: "intermediate"
|
|
33
|
+
completeness: "full"
|
|
34
|
+
created: "2025-03-24"
|
|
35
|
+
updated: "2025-03-24"
|
|
36
|
+
author: "antv-team"
|
|
37
|
+
source_url: "https://g2.antv.antgroup.com/manual/core/transform/select"
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 最小可运行示例(折线图末端标签)
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
import { Chart } from '@antv/g2';
|
|
44
|
+
|
|
45
|
+
const data = [
|
|
46
|
+
{ month: 'Jan', type: 'A', value: 83 },
|
|
47
|
+
{ month: 'Feb', type: 'A', value: 90 },
|
|
48
|
+
{ month: 'Mar', type: 'A', value: 76 },
|
|
49
|
+
{ month: 'Jan', type: 'B', value: 50 },
|
|
50
|
+
{ month: 'Feb', type: 'B', value: 65 },
|
|
51
|
+
{ month: 'Mar', type: 'B', value: 72 },
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const chart = new Chart({ container: 'container', width: 640, height: 400 });
|
|
55
|
+
|
|
56
|
+
// 主折线图
|
|
57
|
+
chart.options({
|
|
58
|
+
type: 'view',
|
|
59
|
+
children: [
|
|
60
|
+
{
|
|
61
|
+
type: 'line',
|
|
62
|
+
data,
|
|
63
|
+
encode: { x: 'month', y: 'value', color: 'type' },
|
|
64
|
+
},
|
|
65
|
+
// 末端标签:text mark + selectX(取每条线的最后一个点)
|
|
66
|
+
{
|
|
67
|
+
type: 'text',
|
|
68
|
+
data,
|
|
69
|
+
encode: { x: 'month', y: 'value', color: 'type', text: 'type' },
|
|
70
|
+
transform: [
|
|
71
|
+
{
|
|
72
|
+
type: 'selectX',
|
|
73
|
+
selector: 'last', // 取每组(每条线)x 最大的点
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
style: { textAnchor: 'start', dx: 6 },
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
chart.render();
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 标注最大值
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
// 在折线图最高点添加标注
|
|
88
|
+
{
|
|
89
|
+
type: 'point',
|
|
90
|
+
data,
|
|
91
|
+
encode: { x: 'date', y: 'value', color: 'type' },
|
|
92
|
+
transform: [
|
|
93
|
+
{
|
|
94
|
+
type: 'selectY',
|
|
95
|
+
selector: 'max', // 每组取 y 值最大的点
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
style: { r: 6, lineWidth: 2 },
|
|
99
|
+
labels: [{ text: (d) => `最高: ${d.value}`, position: 'top' }],
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## selector 速查
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// 取最后一个点(常用于末端标签)
|
|
107
|
+
transform: [{ type: 'selectX', selector: 'last' }]
|
|
108
|
+
|
|
109
|
+
// 取第一个点
|
|
110
|
+
transform: [{ type: 'selectX', selector: 'first' }]
|
|
111
|
+
|
|
112
|
+
// 取 y 值最大的点
|
|
113
|
+
transform: [{ type: 'selectY', selector: 'max' }]
|
|
114
|
+
|
|
115
|
+
// 取 y 值最小的点
|
|
116
|
+
transform: [{ type: 'selectY', selector: 'min' }]
|
|
117
|
+
|
|
118
|
+
// 自定义:取第 N 个点
|
|
119
|
+
transform: [{ type: 'selectX', selector: (data) => data[Math.floor(data.length / 2)] }]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## 常见错误与修正
|
|
123
|
+
|
|
124
|
+
### 错误:select 用在 line mark 自身——应用在独立的 text/point mark
|
|
125
|
+
```javascript
|
|
126
|
+
// ❌ 在 line mark 上用 selectX,整条线只剩一个点
|
|
127
|
+
chart.options({
|
|
128
|
+
type: 'line',
|
|
129
|
+
data,
|
|
130
|
+
encode: { x: 'month', y: 'value' },
|
|
131
|
+
transform: [{ type: 'selectX', selector: 'last' }], // ❌ 会把折线变成单点
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// ✅ select 用在额外的 text 或 point mark,与 line 并列
|
|
135
|
+
chart.options({
|
|
136
|
+
type: 'view',
|
|
137
|
+
children: [
|
|
138
|
+
{ type: 'line', data, encode: { x: 'month', y: 'value' } },
|
|
139
|
+
{
|
|
140
|
+
type: 'text',
|
|
141
|
+
data,
|
|
142
|
+
encode: { x: 'month', y: 'value', text: 'value' },
|
|
143
|
+
transform: [{ type: 'selectX', selector: 'last' }], // ✅ 独立 mark
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
```
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-selectx"
|
|
3
|
+
title: "G2 SelectX Transform"
|
|
4
|
+
description: |
|
|
5
|
+
按 X 通道选择数据子集。用于筛选每个 X 类别的特定数据点,
|
|
6
|
+
如最大值、最小值、首个、末个等。
|
|
7
|
+
|
|
8
|
+
library: "g2"
|
|
9
|
+
version: "5.x"
|
|
10
|
+
category: "transforms"
|
|
11
|
+
tags:
|
|
12
|
+
- "选择"
|
|
13
|
+
- "筛选"
|
|
14
|
+
- "X轴"
|
|
15
|
+
- "极值"
|
|
16
|
+
|
|
17
|
+
related:
|
|
18
|
+
- "g2-transform-select"
|
|
19
|
+
- "g2-transform-selecty"
|
|
20
|
+
|
|
21
|
+
use_cases:
|
|
22
|
+
- "只显示每个类别的最大值"
|
|
23
|
+
- "筛选每个 X 分组的首个/末个数据点"
|
|
24
|
+
- "突出显示极值点"
|
|
25
|
+
|
|
26
|
+
anti_patterns:
|
|
27
|
+
- "需要保留所有数据时不应使用"
|
|
28
|
+
|
|
29
|
+
difficulty: "beginner"
|
|
30
|
+
completeness: "full"
|
|
31
|
+
created: "2025-03-26"
|
|
32
|
+
updated: "2025-03-26"
|
|
33
|
+
author: "antv-team"
|
|
34
|
+
source_url: "https://g2.antv.antgroup.com/manual/core/transform"
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 核心概念
|
|
38
|
+
|
|
39
|
+
SelectX Transform 按 X 通道分组,然后从每组中选择特定的数据点。选择器支持:
|
|
40
|
+
- `max`:Y 值最大的点
|
|
41
|
+
- `min`:Y 值最小的点
|
|
42
|
+
- `first`:首个数据点
|
|
43
|
+
- `last`:末个数据点
|
|
44
|
+
- 自定义选择函数
|
|
45
|
+
|
|
46
|
+
## 最小可运行示例
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
import { Chart } from '@antv/g2';
|
|
50
|
+
|
|
51
|
+
const chart = new Chart({
|
|
52
|
+
container: 'container',
|
|
53
|
+
width: 640,
|
|
54
|
+
height: 480,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
chart.options({
|
|
58
|
+
type: 'point',
|
|
59
|
+
data: [
|
|
60
|
+
{ category: 'A', value: 10 },
|
|
61
|
+
{ category: 'A', value: 25 },
|
|
62
|
+
{ category: 'A', value: 15 },
|
|
63
|
+
{ category: 'B', value: 20 },
|
|
64
|
+
{ category: 'B', value: 35 },
|
|
65
|
+
{ category: 'B', value: 30 },
|
|
66
|
+
],
|
|
67
|
+
encode: {
|
|
68
|
+
x: 'category',
|
|
69
|
+
y: 'value',
|
|
70
|
+
},
|
|
71
|
+
transform: [
|
|
72
|
+
{
|
|
73
|
+
type: 'selectX',
|
|
74
|
+
selector: 'max', // 只保留每个类别的最大值点
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
chart.render();
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 常用变体
|
|
83
|
+
|
|
84
|
+
### 选择最小值
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
chart.options({
|
|
88
|
+
type: 'point',
|
|
89
|
+
data,
|
|
90
|
+
encode: { x: 'category', y: 'value' },
|
|
91
|
+
transform: [
|
|
92
|
+
{ type: 'selectX', selector: 'min' },
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 选择首个/末个
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
// 选择每个类别的第一个数据点
|
|
101
|
+
chart.options({
|
|
102
|
+
type: 'point',
|
|
103
|
+
data,
|
|
104
|
+
encode: { x: 'category', y: 'value' },
|
|
105
|
+
transform: [
|
|
106
|
+
{ type: 'selectX', selector: 'first' },
|
|
107
|
+
],
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// 选择每个类别的最后一个数据点
|
|
111
|
+
chart.options({
|
|
112
|
+
type: 'point',
|
|
113
|
+
data,
|
|
114
|
+
encode: { x: 'category', y: 'value' },
|
|
115
|
+
transform: [
|
|
116
|
+
{ type: 'selectX', selector: 'last' },
|
|
117
|
+
],
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 自定义选择器
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
chart.options({
|
|
125
|
+
type: 'point',
|
|
126
|
+
data,
|
|
127
|
+
encode: { x: 'category', y: 'value' },
|
|
128
|
+
transform: [
|
|
129
|
+
{
|
|
130
|
+
type: 'selectX',
|
|
131
|
+
selector: (I, Y) => {
|
|
132
|
+
// I: 组内索引数组
|
|
133
|
+
// Y: Y 通道的值数组
|
|
134
|
+
// 返回选中的索引
|
|
135
|
+
return I.reduce((maxIdx, i) => Y[i] > Y[maxIdx] ? i : maxIdx, I[0]);
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 完整类型参考
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
interface SelectXTransform {
|
|
146
|
+
type: 'selectX';
|
|
147
|
+
selector: 'max' | 'min' | 'first' | 'last' | ((I: number[], Y: any[]) => number);
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 与 Select/SelectY 的对比
|
|
152
|
+
|
|
153
|
+
| Transform | 分组维度 | 常用场景 |
|
|
154
|
+
|-----------|---------|---------|
|
|
155
|
+
| select | 按指定通道 | 通用选择 |
|
|
156
|
+
| selectX | 按 X 通道 | X 轴分类筛选 |
|
|
157
|
+
| selectY | 按 Y 通道 | Y 轴分类筛选 |
|
|
158
|
+
|
|
159
|
+
## 常见错误与修正
|
|
160
|
+
|
|
161
|
+
### 错误 1:selector 拼写错误
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
// ❌ 错误
|
|
165
|
+
transform: [{ type: 'selectX', selector: 'maximum' }]
|
|
166
|
+
|
|
167
|
+
// ✅ 正确
|
|
168
|
+
transform: [{ type: 'selectX', selector: 'max' }]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 错误 2:自定义选择器返回值错误
|
|
172
|
+
|
|
173
|
+
```javascript
|
|
174
|
+
// ❌ 错误:返回了值而非索引
|
|
175
|
+
selector: (I, Y) => Math.max(...I.map(i => Y[i]))
|
|
176
|
+
|
|
177
|
+
// ✅ 正确:返回索引
|
|
178
|
+
selector: (I, Y) => I.reduce((maxIdx, i) => Y[i] > Y[maxIdx] ? i : maxIdx, I[0])
|
|
179
|
+
```
|