@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.
Files changed (302) hide show
  1. package/builtin-skills/antd/SKILL.md +266 -0
  2. package/builtin-skills/antv-g2-chart/SKILL.md +1067 -0
  3. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-intro.md +176 -0
  4. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-keyframe.md +149 -0
  5. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-types.md +253 -0
  6. package/builtin-skills/antv-g2-chart/references/components/g2-comp-annotation.md +237 -0
  7. package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-config.md +648 -0
  8. package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-radar.md +219 -0
  9. package/builtin-skills/antv-g2-chart/references/components/g2-comp-label-config.md +174 -0
  10. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-category.md +278 -0
  11. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-config.md +363 -0
  12. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-continuous.md +264 -0
  13. package/builtin-skills/antv-g2-chart/references/components/g2-comp-scrollbar.md +276 -0
  14. package/builtin-skills/antv-g2-chart/references/components/g2-comp-slider.md +333 -0
  15. package/builtin-skills/antv-g2-chart/references/components/g2-comp-title.md +149 -0
  16. package/builtin-skills/antv-g2-chart/references/components/g2-comp-tooltip-config.md +358 -0
  17. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-circle.md +97 -0
  18. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-rect.md +241 -0
  19. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geo-map.md +210 -0
  20. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geoview.md +143 -0
  21. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-repeat-matrix.md +171 -0
  22. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-flex.md +142 -0
  23. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-layer.md +149 -0
  24. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-timing-keyframe.md +91 -0
  25. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-view.md +309 -0
  26. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-chart-selection.md +235 -0
  27. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-color-theory.md +287 -0
  28. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-visual-channels.md +180 -0
  29. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-cartesian.md +131 -0
  30. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-fisheye.md +131 -0
  31. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-helix.md +141 -0
  32. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-parallel.md +129 -0
  33. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-polar.md +143 -0
  34. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-radial.md +214 -0
  35. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-theta.md +171 -0
  36. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-transpose.md +195 -0
  37. package/builtin-skills/antv-g2-chart/references/core/g2-core-chart-init.md +266 -0
  38. package/builtin-skills/antv-g2-chart/references/core/g2-core-encode-channel.md +197 -0
  39. package/builtin-skills/antv-g2-chart/references/core/g2-core-view-composition.md +224 -0
  40. package/builtin-skills/antv-g2-chart/references/data/g2-data-ema.md +190 -0
  41. package/builtin-skills/antv-g2-chart/references/data/g2-data-fetch.md +167 -0
  42. package/builtin-skills/antv-g2-chart/references/data/g2-data-filter.md +212 -0
  43. package/builtin-skills/antv-g2-chart/references/data/g2-data-fold.md +260 -0
  44. package/builtin-skills/antv-g2-chart/references/data/g2-data-format-tabular.md +280 -0
  45. package/builtin-skills/antv-g2-chart/references/data/g2-data-kde.md +426 -0
  46. package/builtin-skills/antv-g2-chart/references/data/g2-data-log.md +140 -0
  47. package/builtin-skills/antv-g2-chart/references/data/g2-data-slice.md +147 -0
  48. package/builtin-skills/antv-g2-chart/references/data/g2-data-sort.md +251 -0
  49. package/builtin-skills/antv-g2-chart/references/data/g2-data-sortby.md +183 -0
  50. package/builtin-skills/antv-g2-chart/references/data/g2-data-transform-patterns.md +394 -0
  51. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-adaptive-filter.md +118 -0
  52. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-axis.md +112 -0
  53. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-filter.md +122 -0
  54. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-x-y-highlight.md +127 -0
  55. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-xy.md +118 -0
  56. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush.md +184 -0
  57. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-filter.md +170 -0
  58. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-highlight.md +186 -0
  59. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-filter.md +170 -0
  60. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-highlight.md +185 -0
  61. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-chart-index.md +127 -0
  62. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-drilldown.md +149 -0
  63. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight-by.md +125 -0
  64. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight.md +235 -0
  65. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-hover-scale.md +109 -0
  66. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-point-move.md +152 -0
  67. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select-by.md +133 -0
  68. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select.md +249 -0
  69. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-fisheye.md +117 -0
  70. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-filter.md +130 -0
  71. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-highlight.md +130 -0
  72. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-poptip.md +105 -0
  73. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-scrollbar-filter.md +144 -0
  74. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-filter.md +231 -0
  75. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-wheel.md +138 -0
  76. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-tooltip.md +192 -0
  77. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-treemap-drilldown.md +152 -0
  78. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-contrast-reverse.md +170 -0
  79. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-exceed-adjust.md +146 -0
  80. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-hide.md +185 -0
  81. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-stroke.md +147 -0
  82. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-dodge-y.md +225 -0
  83. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-hide.md +213 -0
  84. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-diagram.md +196 -0
  85. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-donut.md +148 -0
  86. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-pie.md +212 -0
  87. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-basic.md +168 -0
  88. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-stacked.md +150 -0
  89. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-beeswarm.md +134 -0
  90. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bi-directional-bar.md +297 -0
  91. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-box-boxplot.md +163 -0
  92. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-boxplot.md +340 -0
  93. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bullet.md +203 -0
  94. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-cell-heatmap.md +370 -0
  95. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-chord.md +341 -0
  96. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-connector.md +126 -0
  97. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-contourline.md +243 -0
  98. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-density.md +457 -0
  99. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-distribution-curve.md +298 -0
  100. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-funnel.md +329 -0
  101. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gantt.md +208 -0
  102. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gauge.md +247 -0
  103. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-heatmap.md +130 -0
  104. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-histogram.md +186 -0
  105. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-image.md +129 -0
  106. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-basic.md +528 -0
  107. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-grouped.md +161 -0
  108. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-normalized.md +147 -0
  109. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-stacked.md +183 -0
  110. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-k-chart.md +237 -0
  111. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-basic.md +353 -0
  112. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-multi.md +156 -0
  113. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-linex-liney.md +176 -0
  114. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-link.md +134 -0
  115. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-liquid.md +125 -0
  116. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-mosaic.md +257 -0
  117. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-pack.md +424 -0
  118. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-parallel.md +195 -0
  119. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-partition.md +275 -0
  120. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-path.md +135 -0
  121. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-bubble.md +138 -0
  122. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-scatter.md +177 -0
  123. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-polygon.md +130 -0
  124. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radar.md +231 -0
  125. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radial-bar.md +226 -0
  126. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-range-rangey.md +253 -0
  127. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rangex.md +293 -0
  128. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rect.md +115 -0
  129. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-regression-curve.md +276 -0
  130. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rose.md +182 -0
  131. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sankey.md +217 -0
  132. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-shape.md +160 -0
  133. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-spiral.md +257 -0
  134. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sunburst.md +327 -0
  135. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-text.md +309 -0
  136. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-tree.md +235 -0
  137. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-treemap.md +426 -0
  138. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-vector.md +108 -0
  139. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-venn.md +204 -0
  140. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-violin.md +307 -0
  141. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-wordcloud.md +155 -0
  142. package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category10.md +196 -0
  143. package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category20.md +238 -0
  144. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-performance.md +181 -0
  145. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-responsive.md +232 -0
  146. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-v4-to-v5.md +223 -0
  147. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-band.md +127 -0
  148. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-linear.md +259 -0
  149. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-log.md +226 -0
  150. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-ordinal.md +135 -0
  151. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-point.md +242 -0
  152. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-pow-sqrt.md +124 -0
  153. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-quantile-quantize.md +119 -0
  154. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-sequential.md +267 -0
  155. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-threshold.md +133 -0
  156. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-time.md +159 -0
  157. package/builtin-skills/antv-g2-chart/references/themes/g2-theme-builtin.md +192 -0
  158. package/builtin-skills/antv-g2-chart/references/themes/g2-theme-custom.md +183 -0
  159. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-bin.md +153 -0
  160. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-binx.md +133 -0
  161. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-diffy.md +130 -0
  162. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-dodgex.md +90 -0
  163. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-flexx.md +115 -0
  164. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-group.md +233 -0
  165. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupcolor.md +182 -0
  166. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupx.md +265 -0
  167. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupy.md +167 -0
  168. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitter.md +149 -0
  169. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitterx.md +177 -0
  170. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jittery.md +177 -0
  171. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-normalizey.md +83 -0
  172. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-pack.md +164 -0
  173. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sample.md +143 -0
  174. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-select.md +147 -0
  175. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selectx.md +179 -0
  176. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selecty.md +179 -0
  177. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sort-color.md +115 -0
  178. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sortx.md +285 -0
  179. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sorty.md +117 -0
  180. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stack-enter.md +158 -0
  181. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stacky.md +218 -0
  182. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-symmetryy.md +122 -0
  183. package/builtin-skills/chart-visualization/SKILL.md +101 -0
  184. package/{templates/loom-skill → builtin-skills/loom}/SKILL.md +20 -9
  185. package/{templates/loom-skill → builtin-skills/loom}/references/README.md +3 -3
  186. package/dist/capability-generator.d.ts +1 -1
  187. package/dist/capability-generator.js +3 -3
  188. package/dist/capability-generator.js.map +1 -1
  189. package/dist/cli/commands/generate-page.d.ts.map +1 -1
  190. package/dist/cli/commands/generate-page.js +1 -163
  191. package/dist/cli/commands/generate-page.js.map +1 -1
  192. package/dist/cli/commands/init.d.ts.map +1 -1
  193. package/dist/cli/commands/init.js +57 -294
  194. package/dist/cli/commands/init.js.map +1 -1
  195. package/dist/cli/generators/capability-generator.d.ts +35 -0
  196. package/dist/cli/generators/capability-generator.d.ts.map +1 -0
  197. package/dist/cli/generators/capability-generator.js +115 -0
  198. package/dist/cli/generators/capability-generator.js.map +1 -0
  199. package/dist/cli/helpers/column-template.d.ts +18 -0
  200. package/dist/cli/helpers/column-template.d.ts.map +1 -0
  201. package/dist/cli/helpers/column-template.js +151 -0
  202. package/dist/cli/helpers/column-template.js.map +1 -0
  203. package/dist/cli/helpers/field-template.d.ts +4 -0
  204. package/dist/cli/helpers/field-template.d.ts.map +1 -1
  205. package/dist/cli/helpers/field-template.js +4 -3
  206. package/dist/cli/helpers/field-template.js.map +1 -1
  207. package/dist/cli/templates/backend-entry.d.ts +5 -0
  208. package/dist/cli/templates/backend-entry.d.ts.map +1 -0
  209. package/dist/cli/templates/backend-entry.js +17 -0
  210. package/dist/cli/templates/backend-entry.js.map +1 -0
  211. package/dist/cli/templates/frontend-entry.d.ts +11 -0
  212. package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
  213. package/dist/cli/templates/frontend-entry.js +77 -0
  214. package/dist/cli/templates/frontend-entry.js.map +1 -0
  215. package/dist/cli/templates/gitignore.d.ts +5 -0
  216. package/dist/cli/templates/gitignore.d.ts.map +1 -0
  217. package/dist/cli/templates/gitignore.js +13 -0
  218. package/dist/cli/templates/gitignore.js.map +1 -0
  219. package/dist/cli/templates/index.d.ts +12 -0
  220. package/dist/cli/templates/index.d.ts.map +1 -0
  221. package/dist/cli/templates/index.js +12 -0
  222. package/dist/cli/templates/index.js.map +1 -0
  223. package/dist/cli/templates/loom-config.d.ts +10 -0
  224. package/dist/cli/templates/loom-config.d.ts.map +1 -0
  225. package/dist/cli/templates/loom-config.js +31 -0
  226. package/dist/cli/templates/loom-config.js.map +1 -0
  227. package/dist/cli/templates/package-json.d.ts +9 -0
  228. package/dist/cli/templates/package-json.d.ts.map +1 -0
  229. package/dist/cli/templates/package-json.js +39 -0
  230. package/dist/cli/templates/package-json.js.map +1 -0
  231. package/dist/cli/templates/readme.d.ts +9 -0
  232. package/dist/cli/templates/readme.d.ts.map +1 -0
  233. package/dist/cli/templates/readme.js +47 -0
  234. package/dist/cli/templates/readme.js.map +1 -0
  235. package/dist/cli/templates/tsconfig.d.ts +6 -0
  236. package/dist/cli/templates/tsconfig.d.ts.map +1 -0
  237. package/dist/cli/templates/tsconfig.js +41 -0
  238. package/dist/cli/templates/tsconfig.js.map +1 -0
  239. package/dist/cli/templates/vite-config.d.ts +5 -0
  240. package/dist/cli/templates/vite-config.d.ts.map +1 -0
  241. package/dist/cli/templates/vite-config.js +24 -0
  242. package/dist/cli/templates/vite-config.js.map +1 -0
  243. package/dist/commands.d.ts +1 -5
  244. package/dist/commands.d.ts.map +1 -1
  245. package/dist/commands.js +0 -11
  246. package/dist/commands.js.map +1 -1
  247. package/dist/config.d.ts +15 -122
  248. package/dist/config.d.ts.map +1 -1
  249. package/dist/config.js +2 -52
  250. package/dist/config.js.map +1 -1
  251. package/dist/dashboard-config.d.ts +117 -0
  252. package/dist/dashboard-config.d.ts.map +1 -0
  253. package/dist/dashboard-config.js +59 -0
  254. package/dist/dashboard-config.js.map +1 -0
  255. package/dist/index.d.ts +2 -2
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +1 -1
  258. package/dist/index.js.map +1 -1
  259. package/dist/server-bin.js +30 -62
  260. package/dist/server-bin.js.map +1 -1
  261. package/dist/types/adapter.d.ts +28 -0
  262. package/dist/types/adapter.d.ts.map +1 -0
  263. package/dist/types/adapter.js +5 -0
  264. package/dist/types/adapter.js.map +1 -0
  265. package/dist/types/ai.d.ts +52 -0
  266. package/dist/types/ai.d.ts.map +1 -0
  267. package/dist/types/ai.js +5 -0
  268. package/dist/types/ai.js.map +1 -0
  269. package/dist/types/chat.d.ts +46 -0
  270. package/dist/types/chat.d.ts.map +1 -0
  271. package/dist/types/chat.js +5 -0
  272. package/dist/types/chat.js.map +1 -0
  273. package/dist/types/command.d.ts +25 -0
  274. package/dist/types/command.d.ts.map +1 -0
  275. package/dist/types/command.js +5 -0
  276. package/dist/types/command.js.map +1 -0
  277. package/dist/types/config.d.ts +30 -0
  278. package/dist/types/config.d.ts.map +1 -0
  279. package/dist/types/config.js +5 -0
  280. package/dist/types/config.js.map +1 -0
  281. package/dist/types/dashboard.d.ts +42 -0
  282. package/dist/types/dashboard.d.ts.map +1 -0
  283. package/dist/types/dashboard.js +5 -0
  284. package/dist/types/dashboard.js.map +1 -0
  285. package/dist/types/index.d.ts +14 -0
  286. package/dist/types/index.d.ts.map +1 -0
  287. package/dist/types/index.js +8 -0
  288. package/dist/types/index.js.map +1 -0
  289. package/dist/types/model.d.ts +59 -0
  290. package/dist/types/model.d.ts.map +1 -0
  291. package/dist/types/model.js +5 -0
  292. package/dist/types/model.js.map +1 -0
  293. package/dist/types.d.ts +4 -250
  294. package/dist/types.d.ts.map +1 -1
  295. package/dist/types.js +4 -3
  296. package/dist/types.js.map +1 -1
  297. package/package.json +2 -2
  298. /package/{templates → builtin-skills}/app-skill/SKILL.md +0 -0
  299. /package/{templates → builtin-skills}/app-skill/references/data-semantics.md +0 -0
  300. /package/{templates → builtin-skills}/app-skill/references/models.md +0 -0
  301. /package/{templates/loom-skill → builtin-skills/loom}/references/dashboard.md +0 -0
  302. /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
+ ```