@loom-framework/core 0.1.0-alpha.84 → 0.1.0-alpha.85
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-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 -294
- 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 +39 -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,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-selecty"
|
|
3
|
+
title: "G2 SelectY Transform"
|
|
4
|
+
description: |
|
|
5
|
+
按 Y 通道选择数据子集。用于筛选每个 Y 类别的特定数据点,
|
|
6
|
+
如最大值、最小值、首个、末个等。
|
|
7
|
+
|
|
8
|
+
library: "g2"
|
|
9
|
+
version: "5.x"
|
|
10
|
+
category: "transforms"
|
|
11
|
+
tags:
|
|
12
|
+
- "选择"
|
|
13
|
+
- "筛选"
|
|
14
|
+
- "Y轴"
|
|
15
|
+
- "极值"
|
|
16
|
+
|
|
17
|
+
related:
|
|
18
|
+
- "g2-transform-select"
|
|
19
|
+
- "g2-transform-selectx"
|
|
20
|
+
|
|
21
|
+
use_cases:
|
|
22
|
+
- "水平条形图中筛选极值"
|
|
23
|
+
- "转置坐标系下的数据选择"
|
|
24
|
+
- "按 Y 分类筛选数据点"
|
|
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
|
+
SelectY Transform 按 Y 通道分组,然后从每组中选择特定的数据点。选择器支持:
|
|
40
|
+
- `max`:X 值最大的点
|
|
41
|
+
- `min`:X 值最小的点
|
|
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
|
+
{ value: 10, category: 'A' },
|
|
61
|
+
{ value: 25, category: 'A' },
|
|
62
|
+
{ value: 15, category: 'A' },
|
|
63
|
+
{ value: 20, category: 'B' },
|
|
64
|
+
{ value: 35, category: 'B' },
|
|
65
|
+
{ value: 30, category: 'B' },
|
|
66
|
+
],
|
|
67
|
+
encode: {
|
|
68
|
+
x: 'value',
|
|
69
|
+
y: 'category',
|
|
70
|
+
},
|
|
71
|
+
transform: [
|
|
72
|
+
{
|
|
73
|
+
type: 'selectY',
|
|
74
|
+
selector: 'max', // 只保留每个 Y 类别的最大值点
|
|
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: 'value', y: 'category' },
|
|
91
|
+
transform: [
|
|
92
|
+
{ type: 'selectY', selector: 'min' },
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 选择首个/末个
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
// 选择每个 Y 类别的第一个数据点
|
|
101
|
+
chart.options({
|
|
102
|
+
type: 'point',
|
|
103
|
+
data,
|
|
104
|
+
encode: { x: 'value', y: 'category' },
|
|
105
|
+
transform: [
|
|
106
|
+
{ type: 'selectY', selector: 'first' },
|
|
107
|
+
],
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// 选择每个 Y 类别的最后一个数据点
|
|
111
|
+
chart.options({
|
|
112
|
+
type: 'point',
|
|
113
|
+
data,
|
|
114
|
+
encode: { x: 'value', y: 'category' },
|
|
115
|
+
transform: [
|
|
116
|
+
{ type: 'selectY', selector: 'last' },
|
|
117
|
+
],
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 自定义选择器
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
chart.options({
|
|
125
|
+
type: 'point',
|
|
126
|
+
data,
|
|
127
|
+
encode: { x: 'value', y: 'category' },
|
|
128
|
+
transform: [
|
|
129
|
+
{
|
|
130
|
+
type: 'selectY',
|
|
131
|
+
selector: (I, X) => {
|
|
132
|
+
// I: 组内索引数组
|
|
133
|
+
// X: X 通道的值数组
|
|
134
|
+
// 返回选中的索引
|
|
135
|
+
return I.reduce((maxIdx, i) => X[i] > X[maxIdx] ? i : maxIdx, I[0]);
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 完整类型参考
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
interface SelectYTransform {
|
|
146
|
+
type: 'selectY';
|
|
147
|
+
selector: 'max' | 'min' | 'first' | 'last' | ((I: number[], X: any[]) => number);
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 与 Select/SelectX 的对比
|
|
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: 'selectY', selector: 'minimum' }]
|
|
166
|
+
|
|
167
|
+
// ✅ 正确
|
|
168
|
+
transform: [{ type: 'selectY', selector: 'min' }]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 错误 2:自定义选择器返回值错误
|
|
172
|
+
|
|
173
|
+
```javascript
|
|
174
|
+
// ❌ 错误:返回了值而非索引
|
|
175
|
+
selector: (I, X) => Math.max(...I.map(i => X[i]))
|
|
176
|
+
|
|
177
|
+
// ✅ 正确:返回索引
|
|
178
|
+
selector: (I, X) => I.reduce((maxIdx, i) => X[i] > X[maxIdx] ? i : maxIdx, I[0])
|
|
179
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-sort-color"
|
|
3
|
+
title: "G2 SortColor 按颜色分组排序变换"
|
|
4
|
+
description: |
|
|
5
|
+
sortColor 是 G2 v5 中的排序 Transform,对颜色(color)通道的比例尺域(domain)进行排序。
|
|
6
|
+
与 sortX(对 x 轴排序)类似,但排序作用于 color 通道的类别顺序。
|
|
7
|
+
常用于图例排序、堆叠图层顺序调整等场景。
|
|
8
|
+
|
|
9
|
+
library: "g2"
|
|
10
|
+
version: "5.x"
|
|
11
|
+
category: "transforms"
|
|
12
|
+
tags:
|
|
13
|
+
- "sortColor"
|
|
14
|
+
- "颜色排序"
|
|
15
|
+
- "图例顺序"
|
|
16
|
+
- "transform"
|
|
17
|
+
- "sort"
|
|
18
|
+
- "color"
|
|
19
|
+
|
|
20
|
+
related:
|
|
21
|
+
- "g2-transform-sortx"
|
|
22
|
+
- "g2-transform-sorty"
|
|
23
|
+
- "g2-mark-interval-stacked"
|
|
24
|
+
|
|
25
|
+
use_cases:
|
|
26
|
+
- "按数值大小对图例顺序排序"
|
|
27
|
+
- "堆叠柱状图的颜色分层顺序调整"
|
|
28
|
+
- "折线图系列颜色分配顺序控制"
|
|
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/sort-color"
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 核心概念
|
|
39
|
+
|
|
40
|
+
`sortColor` 通过计算各 color 分组的聚合值(默认 y 通道的均值),
|
|
41
|
+
对 color scale 的 domain 进行重新排序,影响:
|
|
42
|
+
- 图例的显示顺序
|
|
43
|
+
- 堆叠图中各层的叠放顺序
|
|
44
|
+
- 颜色分配顺序
|
|
45
|
+
|
|
46
|
+
## 基本用法
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
import { Chart } from '@antv/g2';
|
|
50
|
+
|
|
51
|
+
const chart = new Chart({ container: 'container', width: 640, height: 480 });
|
|
52
|
+
|
|
53
|
+
chart.options({
|
|
54
|
+
type: 'interval',
|
|
55
|
+
data: [
|
|
56
|
+
{ month: 'Jan', type: 'A', value: 50 },
|
|
57
|
+
{ month: 'Jan', type: 'B', value: 80 },
|
|
58
|
+
{ month: 'Jan', type: 'C', value: 30 },
|
|
59
|
+
{ month: 'Feb', type: 'A', value: 60 },
|
|
60
|
+
{ month: 'Feb', type: 'B', value: 70 },
|
|
61
|
+
{ month: 'Feb', type: 'C', value: 40 },
|
|
62
|
+
],
|
|
63
|
+
encode: { x: 'month', y: 'value', color: 'type' },
|
|
64
|
+
transform: [
|
|
65
|
+
{ type: 'stackY' },
|
|
66
|
+
{ type: 'sortColor', channel: 'y', order: 'descending' }, // 按 y 均值降序排列颜色
|
|
67
|
+
],
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
chart.render();
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 配置项
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
chart.options({
|
|
77
|
+
transform: [
|
|
78
|
+
{
|
|
79
|
+
type: 'sortColor',
|
|
80
|
+
channel: 'y', // 用于计算排序依据的通道,默认 'y'
|
|
81
|
+
order: 'ascending', // 'ascending'(升序)| 'descending'(降序),默认 'ascending'
|
|
82
|
+
reducer: 'mean', // 聚合方式:'mean' | 'sum' | 'max' | 'min' | 函数,默认 'mean'
|
|
83
|
+
reverse: false, // 是否反转排序结果
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 与 sortX 对比
|
|
90
|
+
|
|
91
|
+
```javascript
|
|
92
|
+
// sortX:对 x 轴类别顺序排序(影响柱子/点的 x 轴位置顺序)
|
|
93
|
+
transform: [{ type: 'sortX', channel: 'y', order: 'descending' }]
|
|
94
|
+
|
|
95
|
+
// sortColor:对颜色分组(图例/堆叠层)排序(不影响 x 轴顺序)
|
|
96
|
+
transform: [{ type: 'sortColor', channel: 'y', order: 'descending' }]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 常见错误与修正
|
|
100
|
+
|
|
101
|
+
### 错误:期望改变柱子位置但用了 sortColor
|
|
102
|
+
```javascript
|
|
103
|
+
// ❌ 错误:sortColor 只改变颜色/图例顺序,不改变 x 轴柱子位置
|
|
104
|
+
chart.options({
|
|
105
|
+
encode: { x: 'type', y: 'value' },
|
|
106
|
+
transform: [{ type: 'sortColor', channel: 'y', order: 'descending' }],
|
|
107
|
+
// x 轴柱子顺序没有变化!
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// ✅ 要改变 x 轴柱子位置,使用 sortX
|
|
111
|
+
chart.options({
|
|
112
|
+
encode: { x: 'type', y: 'value' },
|
|
113
|
+
transform: [{ type: 'sortX', channel: 'y', order: 'descending' }], // ✅
|
|
114
|
+
});
|
|
115
|
+
```
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-sortx"
|
|
3
|
+
title: "G2 SortX 排序变换"
|
|
4
|
+
description: |
|
|
5
|
+
SortX 对 x 轴的分类数据按指定字段或函数进行排序,
|
|
6
|
+
常用于将柱状图按数值从大到小排列,创建排名图表。
|
|
7
|
+
多系列按分组总量排序用内置 reducer: 'sum',无需自定义函数。
|
|
8
|
+
|
|
9
|
+
library: "g2"
|
|
10
|
+
version: "5.x"
|
|
11
|
+
category: "transforms"
|
|
12
|
+
tags:
|
|
13
|
+
- "sortX"
|
|
14
|
+
- "排序"
|
|
15
|
+
- "排名"
|
|
16
|
+
- "transform"
|
|
17
|
+
- "柱状图排序"
|
|
18
|
+
- "spec"
|
|
19
|
+
|
|
20
|
+
related:
|
|
21
|
+
- "g2-mark-interval-basic"
|
|
22
|
+
- "g2-transform-dodgex"
|
|
23
|
+
|
|
24
|
+
use_cases:
|
|
25
|
+
- "创建按值降序排列的柱状图(排名图)"
|
|
26
|
+
- "对分类轴自定义排序顺序"
|
|
27
|
+
- "多系列堆叠图按分组总量排序"
|
|
28
|
+
|
|
29
|
+
difficulty: "beginner"
|
|
30
|
+
completeness: "full"
|
|
31
|
+
created: "2024-01-01"
|
|
32
|
+
updated: "2025-04-02"
|
|
33
|
+
author: "antv-team"
|
|
34
|
+
source_url: "https://g2.antv.antgroup.com/manual/core/transform/sort-x"
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 最小可运行示例(按值降序排列)
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
import { Chart } from '@antv/g2';
|
|
41
|
+
|
|
42
|
+
const chart = new Chart({ container: 'container', width: 640, height: 480 });
|
|
43
|
+
|
|
44
|
+
chart.options({
|
|
45
|
+
type: 'interval',
|
|
46
|
+
data: [
|
|
47
|
+
{ city: '北京', gdp: 3.6 },
|
|
48
|
+
{ city: '上海', gdp: 4.3 },
|
|
49
|
+
{ city: '广州', gdp: 2.8 },
|
|
50
|
+
{ city: '深圳', gdp: 3.2 },
|
|
51
|
+
{ city: '杭州', gdp: 1.8 },
|
|
52
|
+
{ city: '成都', gdp: 2.0 },
|
|
53
|
+
],
|
|
54
|
+
encode: { x: 'city', y: 'gdp' },
|
|
55
|
+
transform: [
|
|
56
|
+
{
|
|
57
|
+
type: 'sortX',
|
|
58
|
+
by: 'y', // 按 y 通道值排序
|
|
59
|
+
reverse: true, // true = 降序(最大值在左)
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
coordinate: { transform: [{ type: 'transpose' }] }, // 转为水平排名图
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
chart.render();
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 配置项
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
transform: [
|
|
72
|
+
{
|
|
73
|
+
type: 'sortX',
|
|
74
|
+
by: 'y', // 排序依据的 channel 名('y' | 'x' | 'color' 等)
|
|
75
|
+
reducer: 'max', // 分组聚合方式(见下方说明),默认 'max'
|
|
76
|
+
reverse: true, // 是否反转顺序(默认 false = 升序)
|
|
77
|
+
slice: 10, // 只保留前 N 个(用于 Top N 图表)
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**`reducer` 内置值**(多系列/堆叠场景下对分组内的多个 y 值做聚合):
|
|
83
|
+
|
|
84
|
+
| 值 | 含义 |
|
|
85
|
+
|----|------|
|
|
86
|
+
| `'max'` | 取分组最大值(默认) |
|
|
87
|
+
| `'min'` | 取分组最小值 |
|
|
88
|
+
| `'sum'` | 取分组总和 ← **多系列按总量排序用这个** |
|
|
89
|
+
| `'mean'` | 取分组平均值 |
|
|
90
|
+
| `'median'` | 取分组中位数 |
|
|
91
|
+
| `'first'` | 取分组第一个值 |
|
|
92
|
+
| `'last'` | 取分组最后一个值 |
|
|
93
|
+
|
|
94
|
+
## Top N 排名图(只展示前 10)
|
|
95
|
+
|
|
96
|
+
```javascript
|
|
97
|
+
chart.options({
|
|
98
|
+
type: 'interval',
|
|
99
|
+
data: fullData,
|
|
100
|
+
encode: { x: 'name', y: 'score' },
|
|
101
|
+
transform: [
|
|
102
|
+
{
|
|
103
|
+
type: 'sortX',
|
|
104
|
+
by: 'y',
|
|
105
|
+
reverse: true,
|
|
106
|
+
slice: 10, // 只取前 10 名
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
coordinate: { transform: [{ type: 'transpose' }] },
|
|
110
|
+
axis: { x: { title: null } },
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 自定义排序(按指定字段)
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
// 数据中有 rank 字段,按 rank 排序
|
|
118
|
+
chart.options({
|
|
119
|
+
type: 'interval',
|
|
120
|
+
data,
|
|
121
|
+
encode: { x: 'name', y: 'value' },
|
|
122
|
+
transform: [
|
|
123
|
+
{ type: 'sortX', by: 'rank', reverse: false },
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 按分组总量排序(多系列堆叠图)
|
|
129
|
+
|
|
130
|
+
多系列图中每个 x 分组有多条数据,用内置 `reducer: 'sum'` 按各分组 y 值之和排序,**不需要自定义函数**:
|
|
131
|
+
|
|
132
|
+
```javascript
|
|
133
|
+
chart.options({
|
|
134
|
+
type: 'interval',
|
|
135
|
+
data,
|
|
136
|
+
encode: { x: 'city', y: 'value', color: 'type' },
|
|
137
|
+
transform: [
|
|
138
|
+
{ type: 'stackY' },
|
|
139
|
+
{
|
|
140
|
+
type: 'sortX',
|
|
141
|
+
by: 'y',
|
|
142
|
+
reducer: 'sum', // ✅ 内置求和,按各城市所有系列总和排序
|
|
143
|
+
reverse: true,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 径向坐标系中的排序注意事项
|
|
150
|
+
|
|
151
|
+
在使用 `radial` 径向坐标系时,SortX 的行为与常规笛卡尔坐标系一致,但需要注意以下几点:
|
|
152
|
+
|
|
153
|
+
1. **x 和 y 通道映射**:在径向坐标系中,x 通常映射为角度(即圆周方向),y 映射为半径(即距离中心的距离)。因此,`by: 'y'` 实际上是对半径进行排序。
|
|
154
|
+
2. **排序必要性**:由于径向图表存在“半径反馈效应”,即外圈即使数值较小也可能看起来比内圈数值大的条目长,因此**强烈建议在使用径向坐标系时对数据进行排序**,以确保视觉准确性。
|
|
155
|
+
3. **排序方向控制**:`reverse: true` 会使数据按降序排列,即数值最大的项靠近最外圈;`reverse: false` 则相反。
|
|
156
|
+
|
|
157
|
+
```javascript
|
|
158
|
+
// ✅ 正确:在径向坐标系中按 y 值排序并渲染
|
|
159
|
+
chart.options({
|
|
160
|
+
type: 'interval',
|
|
161
|
+
data: [
|
|
162
|
+
{ movie: '电影A', rating: 9.2, genre: '科幻' },
|
|
163
|
+
{ movie: '电影B', rating: 8.7, genre: '动作' },
|
|
164
|
+
{ movie: '电影C', rating: 8.5, genre: '科幻' },
|
|
165
|
+
{ movie: '电影D', rating: 7.9, genre: '喜剧' },
|
|
166
|
+
{ movie: '电影E', rating: 7.2, genre: '动作' },
|
|
167
|
+
{ movie: '电影F', rating: 6.8, genre: '喜剧' }
|
|
168
|
+
].sort((a, b) => b.rating - a.rating), // 数据预排序
|
|
169
|
+
coordinate: { type: 'radial', innerRadius: 0.35 },
|
|
170
|
+
encode: {
|
|
171
|
+
x: 'movie',
|
|
172
|
+
y: 'rating',
|
|
173
|
+
color: 'rating',
|
|
174
|
+
},
|
|
175
|
+
scale: {
|
|
176
|
+
y: { domain: [0, 10] },
|
|
177
|
+
},
|
|
178
|
+
style: {
|
|
179
|
+
radius: 5,
|
|
180
|
+
fillOpacity: 0.95,
|
|
181
|
+
},
|
|
182
|
+
labels: [{
|
|
183
|
+
text: 'rating',
|
|
184
|
+
position: 'inside',
|
|
185
|
+
style: { fontWeight: 'bold', fill: 'white' },
|
|
186
|
+
}],
|
|
187
|
+
axis: {
|
|
188
|
+
x: { label: { autoRotate: true, style: { fontSize: 10 } } },
|
|
189
|
+
y: { label: true, grid: false, style: { fontSize: 9 } },
|
|
190
|
+
},
|
|
191
|
+
interaction: [{ type: 'elementHighlightByColor' }],
|
|
192
|
+
});
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## 常见错误与修正
|
|
196
|
+
|
|
197
|
+
### 错误:用自定义函数代替内置 reducer,且误用不存在的 `{ value }` 参数
|
|
198
|
+
|
|
199
|
+
`sortX` 没有 `by: ({ value }) => ...` 这种 API。`by` 只接受 **channel 名字符串**,聚合逻辑通过 `reducer` 控制。自定义 `reducer` 函数的签名是 `(GI, V) => number`(`GI` = 该分组的行索引数组,`V` = 整列数值数组),而不是接收数据对象数组。
|
|
200
|
+
|
|
201
|
+
```javascript
|
|
202
|
+
// ❌ 错误:by 不接受函数,({ value }) 参数不存在
|
|
203
|
+
transform: [
|
|
204
|
+
{
|
|
205
|
+
type: 'sortX',
|
|
206
|
+
by: ({ value }) => d3.sum(value, (d) => d.sales), // ❌ by 只能是字符串
|
|
207
|
+
reverse: true,
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
|
|
211
|
+
// ❌ 同样错误:即使不用 d3,函数形式也不对
|
|
212
|
+
transform: [
|
|
213
|
+
{
|
|
214
|
+
type: 'sortX',
|
|
215
|
+
by: ({ value }) => value.reduce((sum, d) => sum + d.value, 0), // ❌ by 不支持函数
|
|
216
|
+
reverse: true,
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
|
|
220
|
+
// ✅ 正确:按分组总和排序用内置 reducer: 'sum'
|
|
221
|
+
transform: [
|
|
222
|
+
{
|
|
223
|
+
type: 'sortX',
|
|
224
|
+
by: 'y',
|
|
225
|
+
reducer: 'sum', // ✅ 内置聚合,无需自定义函数
|
|
226
|
+
reverse: true,
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 错误:在任何回调中使用未导入的 `d3`
|
|
232
|
+
|
|
233
|
+
G2 内部使用 d3,但 `d3` 对象不会暴露到用户代码作用域。调用 `d3.sum()`、`d3.max()` 等会抛出 `ReferenceError: d3 is not defined`。如确需自定义逻辑,用原生 JS 替代:
|
|
234
|
+
|
|
235
|
+
```javascript
|
|
236
|
+
// d3.sum(arr, d => d.v) → arr.reduce((s, d) => s + d.v, 0)
|
|
237
|
+
// d3.max(arr, d => d.v) → Math.max(...arr.map(d => d.v))
|
|
238
|
+
// d3.min(arr, d => d.v) → Math.min(...arr.map(d => d.v))
|
|
239
|
+
// d3.mean(arr, d => d.v) → arr.reduce((s, d) => s + d.v, 0) / arr.length
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### 错误:在径向坐标系中错误使用 x/y 映射导致排序无效
|
|
243
|
+
|
|
244
|
+
在径向坐标系中,如果将本应作为排序依据的字段错误地映射到 x 通道,而将角度映射到 y 通道,则 `sortX` 将无法达到预期效果。正确的做法是将排序依据字段映射到 y 通道,并确保数据已按该字段排序。
|
|
245
|
+
|
|
246
|
+
```javascript
|
|
247
|
+
// ❌ 错误:在径向坐标系中错误地将 rating 映射到 x 通道
|
|
248
|
+
chart.options({
|
|
249
|
+
type: 'interval',
|
|
250
|
+
data: [
|
|
251
|
+
{ movie: '电影A', rating: 9.2, genre: '科幻' },
|
|
252
|
+
{ movie: '电影B', rating: 8.7, genre: '动作' },
|
|
253
|
+
// ...
|
|
254
|
+
],
|
|
255
|
+
coordinate: { type: 'radial', innerRadius: 0.2 },
|
|
256
|
+
encode: {
|
|
257
|
+
x: 'rating', // ❌ 错误:rating 应该映射到 y 通道
|
|
258
|
+
y: 'movie', // ❌ 错误:movie 应该映射到 x 通道
|
|
259
|
+
color: 'rating',
|
|
260
|
+
},
|
|
261
|
+
transform: [
|
|
262
|
+
{
|
|
263
|
+
type: 'sortX',
|
|
264
|
+
by: 'rating', // ❌ 错误:by 应该是 'y'
|
|
265
|
+
reverse: false,
|
|
266
|
+
},
|
|
267
|
+
],
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
// ✅ 正确:rating 映射到 y 通道,movie 映射到 x 通道,并预排序
|
|
271
|
+
chart.options({
|
|
272
|
+
type: 'interval',
|
|
273
|
+
data: [
|
|
274
|
+
{ movie: '电影A', rating: 9.2, genre: '科幻' },
|
|
275
|
+
{ movie: '电影B', rating: 8.7, genre: '动作' },
|
|
276
|
+
// ...
|
|
277
|
+
].sort((a, b) => b.rating - a.rating),
|
|
278
|
+
coordinate: { type: 'radial', innerRadius: 0.35 },
|
|
279
|
+
encode: {
|
|
280
|
+
x: 'movie', // ✅ 正确:movie 映射到 x 通道(角度)
|
|
281
|
+
y: 'rating', // ✅ 正确:rating 映射到 y 通道(半径)
|
|
282
|
+
color: 'rating',
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "g2-transform-sorty"
|
|
3
|
+
title: "G2 SortY 按 Y 值排序变换"
|
|
4
|
+
description: |
|
|
5
|
+
sortY 在每个 x 分组内按 y 值对数据记录排序,常用于堆叠图中控制各分类的堆叠顺序,
|
|
6
|
+
确保较大的值在底部或顶部。sortX 按 x 通道值对全局数据排序,
|
|
7
|
+
sortColor 则按颜色通道值排序。
|
|
8
|
+
|
|
9
|
+
library: "g2"
|
|
10
|
+
version: "5.x"
|
|
11
|
+
category: "transforms"
|
|
12
|
+
tags:
|
|
13
|
+
- "sortY"
|
|
14
|
+
- "sortX"
|
|
15
|
+
- "排序"
|
|
16
|
+
- "堆叠顺序"
|
|
17
|
+
- "transform"
|
|
18
|
+
|
|
19
|
+
related:
|
|
20
|
+
- "g2-transform-sortx"
|
|
21
|
+
- "g2-transform-stacky"
|
|
22
|
+
- "g2-mark-interval-stacked"
|
|
23
|
+
|
|
24
|
+
use_cases:
|
|
25
|
+
- "堆叠柱状图中控制各分类的堆叠顺序(大值在底)"
|
|
26
|
+
- "确保视觉上更稳定的堆叠布局"
|
|
27
|
+
|
|
28
|
+
difficulty: "intermediate"
|
|
29
|
+
completeness: "full"
|
|
30
|
+
created: "2025-03-24"
|
|
31
|
+
updated: "2025-03-24"
|
|
32
|
+
author: "antv-team"
|
|
33
|
+
source_url: "https://g2.antv.antgroup.com/manual/core/transform/sort"
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 最小可运行示例(堆叠柱状图排序)
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
import { Chart } from '@antv/g2';
|
|
40
|
+
|
|
41
|
+
const data = [
|
|
42
|
+
{ month: 'Jan', type: 'A', value: 100 },
|
|
43
|
+
{ month: 'Jan', type: 'B', value: 200 },
|
|
44
|
+
{ month: 'Jan', type: 'C', value: 50 },
|
|
45
|
+
{ month: 'Feb', type: 'A', value: 120 },
|
|
46
|
+
{ month: 'Feb', type: 'B', value: 80 },
|
|
47
|
+
{ month: 'Feb', type: 'C', value: 180 },
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
const chart = new Chart({ container: 'container', width: 640, height: 400 });
|
|
51
|
+
|
|
52
|
+
chart.options({
|
|
53
|
+
type: 'interval',
|
|
54
|
+
data,
|
|
55
|
+
encode: { x: 'month', y: 'value', color: 'type' },
|
|
56
|
+
transform: [
|
|
57
|
+
{ type: 'sortY', reverse: false }, // 每个 x 分组内按 y 值升序排列
|
|
58
|
+
{ type: 'stackY' }, // 再堆叠(大值在顶部)
|
|
59
|
+
],
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
chart.render();
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## sortX(全局按 x 值排序)
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
// 条形图按数值降序排列(最大值在顶)
|
|
69
|
+
chart.options({
|
|
70
|
+
type: 'interval',
|
|
71
|
+
data: rankingData,
|
|
72
|
+
encode: { x: 'name', y: 'value' },
|
|
73
|
+
transform: [
|
|
74
|
+
{ type: 'sortX', by: 'y', reverse: true }, // 按 y 值降序
|
|
75
|
+
],
|
|
76
|
+
coordinate: { transform: [{ type: 'transpose' }] },
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 配置项
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
// sortY:在每个 x 分组内排序
|
|
84
|
+
transform: [
|
|
85
|
+
{
|
|
86
|
+
type: 'sortY',
|
|
87
|
+
reverse: false, // false = 升序(小值先),true = 降序(大值先),默认 false
|
|
88
|
+
by: 'y', // 排序依据通道,默认 'y'
|
|
89
|
+
},
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
// sortX:全局按 x 通道值排序
|
|
93
|
+
transform: [
|
|
94
|
+
{
|
|
95
|
+
type: 'sortX',
|
|
96
|
+
by: 'y', // 排序依据:'x'(按 x 值)或 'y'(按 y 值大小)
|
|
97
|
+
reverse: true, // true = 降序,默认 false
|
|
98
|
+
},
|
|
99
|
+
]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 常见错误与修正
|
|
103
|
+
|
|
104
|
+
### 错误:sortY 在 stackY 之后执行——堆叠后 y 值已变化,排序基准错误
|
|
105
|
+
```javascript
|
|
106
|
+
// ❌ 错误顺序:stackY 之后的 y 值是累积值,sortY 基于累积值排序
|
|
107
|
+
transform: [
|
|
108
|
+
{ type: 'stackY' }, // ❌ 先堆叠
|
|
109
|
+
{ type: 'sortY' }, // ❌ 后排序,此时 y 已是累积值
|
|
110
|
+
]
|
|
111
|
+
|
|
112
|
+
// ✅ 正确:先排序后堆叠
|
|
113
|
+
transform: [
|
|
114
|
+
{ type: 'sortY' }, // ✅ 先按原始 y 值排序
|
|
115
|
+
{ type: 'stackY' }, // ✅ 再堆叠(堆叠顺序按排序结果)
|
|
116
|
+
]
|
|
117
|
+
```
|