@mstone6969/graph 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +382 -2
- package/dist/GraphType.js +648 -0
- package/dist/catalog-4UP2YFNR.cjs +7 -0
- package/dist/catalog.js +40 -0
- package/dist/charts/bars/BandChart.js +103 -0
- package/dist/charts/bars/BarChart.js +155 -0
- package/dist/charts/bars/BarFrame.js +70 -0
- package/dist/charts/bars/BarRows.js +91 -0
- package/dist/charts/bars/BulletBar.js +184 -0
- package/dist/charts/bars/ButterflyChart.js +85 -0
- package/dist/charts/bars/DateBarChart.js +149 -0
- package/dist/charts/bars/DivergingBarChart.js +226 -0
- package/dist/charts/bars/DotPlot.js +167 -0
- package/dist/charts/bars/DumbbellChart.js +160 -0
- package/dist/charts/bars/ErrorBarColumn.js +147 -0
- package/dist/charts/bars/FacetedBarChart.js +179 -0
- package/dist/charts/bars/GroupedStackedBar.js +156 -0
- package/dist/charts/bars/HistogramBar.js +217 -0
- package/dist/charts/bars/IconlessRankBar.js +139 -0
- package/dist/charts/bars/LollipopChart.js +130 -0
- package/dist/charts/bars/MarimekkoBar.js +191 -0
- package/dist/charts/bars/MirrorChart.js +170 -0
- package/dist/charts/bars/ParetoBar.js +143 -0
- package/dist/charts/bars/PercentChangeBar.js +174 -0
- package/dist/charts/bars/PopulationPyramid.js +101 -0
- package/dist/charts/bars/ProgressBars.js +180 -0
- package/dist/charts/bars/RangeBarChart.js +197 -0
- package/dist/charts/bars/TripleBarOverlay.js +145 -0
- package/dist/charts/bars/WaterfallChart.js +214 -0
- package/dist/charts/bars/index.js +50 -0
- package/dist/charts/business/SparkBar.js +281 -0
- package/dist/charts/business/TornadoChart.js +436 -0
- package/dist/charts/business/index.js +5 -0
- package/dist/charts/comparison/BandValueChart.js +153 -0
- package/dist/charts/comparison/BarMeanChart.js +130 -0
- package/dist/charts/comparison/CycleChart.js +227 -0
- package/dist/charts/comparison/DeviationChart.js +137 -0
- package/dist/charts/comparison/EffectForestPlot.js +207 -0
- package/dist/charts/comparison/ErrorBarChart.js +134 -0
- package/dist/charts/comparison/FloatingBarChart.js +150 -0
- package/dist/charts/comparison/GaugeBarsComparison.js +196 -0
- package/dist/charts/comparison/IntervalChart.js +146 -0
- package/dist/charts/comparison/MeanLineChart.js +142 -0
- package/dist/charts/comparison/PairedBarChart.js +179 -0
- package/dist/charts/comparison/PanelChart.js +70 -0
- package/dist/charts/comparison/RadarLikeProfileChart.js +152 -0
- package/dist/charts/comparison/RangeDotChart.js +131 -0
- package/dist/charts/comparison/RankedDotChart.js +128 -0
- package/dist/charts/comparison/SlopeGraphRanked.js +195 -0
- package/dist/charts/comparison/SmallMultipleBars.js +134 -0
- package/dist/charts/comparison/SpanChart.js +118 -0
- package/dist/charts/comparison/TableLensChart.js +203 -0
- package/dist/charts/comparison/Tally.js +129 -0
- package/dist/charts/comparison/TrellisChart.js +158 -0
- package/dist/charts/comparison/index.js +43 -0
- package/dist/charts/comparison/settleMarks.js +9 -0
- package/dist/charts/demography/DemographyMarks.js +31 -0
- package/dist/charts/demography/LexisCells.js +143 -0
- package/dist/charts/demography/LexisDiagram.js +488 -0
- package/dist/charts/demography/Nomogram.js +447 -0
- package/dist/charts/demography/NomogramLaw.js +221 -0
- package/dist/charts/demography/NomogramScale.js +116 -0
- package/dist/charts/demography/NomogramSolver.js +73 -0
- package/dist/charts/demography/index.js +9 -0
- package/dist/charts/density/BinnedDotChart.js +109 -0
- package/dist/charts/density/ContourChart.js +112 -0
- package/dist/charts/density/ContourLabels.js +41 -0
- package/dist/charts/density/ConvexLayers.js +140 -0
- package/dist/charts/density/DelaunayMesh.js +186 -0
- package/dist/charts/density/DensityContourChart.js +107 -0
- package/dist/charts/density/DensityEnums.js +45 -0
- package/dist/charts/density/DensityScatter.js +118 -0
- package/dist/charts/density/DotDensityChart.js +250 -0
- package/dist/charts/density/DotLattice.js +74 -0
- package/dist/charts/density/FieldChart.js +58 -0
- package/dist/charts/density/FieldContours.js +56 -0
- package/dist/charts/density/FieldLevels.js +66 -0
- package/dist/charts/density/FilledContour.js +90 -0
- package/dist/charts/density/GeoFreeShadedSurface.js +108 -0
- package/dist/charts/density/GradientFieldChart.js +156 -0
- package/dist/charts/density/GridFieldChart.js +103 -0
- package/dist/charts/density/HexbinChart.js +128 -0
- package/dist/charts/density/IsolineChart.js +165 -0
- package/dist/charts/density/KernelDensity2D.js +193 -0
- package/dist/charts/density/KernelField.js +63 -0
- package/dist/charts/density/MarchingSquaresChart.js +203 -0
- package/dist/charts/density/PlaneGeometry.js +91 -0
- package/dist/charts/density/PointDensityChart.js +116 -0
- package/dist/charts/density/QuadtreeChart.js +147 -0
- package/dist/charts/density/RasterDensity.js +140 -0
- package/dist/charts/density/ShadeRaster.js +27 -0
- package/dist/charts/density/StippleDensity.js +121 -0
- package/dist/charts/density/SunflowerPlot.js +94 -0
- package/dist/charts/density/TileMapDensity.js +119 -0
- package/dist/charts/density/TwoDHistogram.js +231 -0
- package/dist/charts/density/VoronoiDiagram.js +124 -0
- package/dist/charts/density/index.js +57 -0
- package/dist/charts/distribution/AxisFrame.js +89 -0
- package/dist/charts/distribution/BackToBackHistogram.js +100 -0
- package/dist/charts/distribution/BarcodePlot.js +104 -0
- package/dist/charts/distribution/BeanPlot.js +92 -0
- package/dist/charts/distribution/BeeswarmChart.js +155 -0
- package/dist/charts/distribution/BinnedChart.js +51 -0
- package/dist/charts/distribution/BoxPlot.js +186 -0
- package/dist/charts/distribution/BoxenChart.js +96 -0
- package/dist/charts/distribution/CumulativeDistribution.js +122 -0
- package/dist/charts/distribution/DensityChart.js +143 -0
- package/dist/charts/distribution/DensityStrip.js +124 -0
- package/dist/charts/distribution/DistributionChart.js +187 -0
- package/dist/charts/distribution/DistributionSamples.js +11 -0
- package/dist/charts/distribution/DistributionStats.js +225 -0
- package/dist/charts/distribution/DotStackBase.js +65 -0
- package/dist/charts/distribution/Dotplot.js +77 -0
- package/dist/charts/distribution/FrequencyPolygon.js +132 -0
- package/dist/charts/distribution/HalfEyePlot.js +133 -0
- package/dist/charts/distribution/HistogramChart.js +146 -0
- package/dist/charts/distribution/KdeBand.js +56 -0
- package/dist/charts/distribution/LetterValueBase.js +51 -0
- package/dist/charts/distribution/LetterValuePlot.js +103 -0
- package/dist/charts/distribution/ParetoChart.js +248 -0
- package/dist/charts/distribution/QuantileDotplot.js +62 -0
- package/dist/charts/distribution/RaincloudChart.js +136 -0
- package/dist/charts/distribution/RidgeSlabs3DChart.js +169 -0
- package/dist/charts/distribution/RidgelineChart.js +154 -0
- package/dist/charts/distribution/SinaPlot.js +106 -0
- package/dist/charts/distribution/StemLeaf.js +249 -0
- package/dist/charts/distribution/StripPlot.js +113 -0
- package/dist/charts/distribution/Violin3DChart.js +135 -0
- package/dist/charts/distribution/ViolinChart.js +88 -0
- package/dist/charts/distribution/enums.js +299 -0
- package/dist/charts/distribution/index.js +53 -0
- package/dist/charts/earthscience/BaseflowSeparation.js +104 -0
- package/dist/charts/earthscience/EarthSample.js +79 -0
- package/dist/charts/earthscience/Hydrograph.js +442 -0
- package/dist/charts/earthscience/SimplexContours.js +94 -0
- package/dist/charts/earthscience/SimplexField.js +118 -0
- package/dist/charts/earthscience/TernaryContour.js +262 -0
- package/dist/charts/earthscience/index.js +6 -0
- package/dist/charts/engineering/BodePlot.js +211 -0
- package/dist/charts/engineering/ComplexMath.js +50 -0
- package/dist/charts/engineering/ConstellationDiagram.js +260 -0
- package/dist/charts/engineering/EngineeringChart.js +296 -0
- package/dist/charts/engineering/EyeDiagram.js +270 -0
- package/dist/charts/engineering/FatigueSNCurve.js +231 -0
- package/dist/charts/engineering/FrequencyResponseChart.js +46 -0
- package/dist/charts/engineering/GoodmanDiagram.js +250 -0
- package/dist/charts/engineering/HysteresisLoopChart.js +236 -0
- package/dist/charts/engineering/IVCurveChart.js +197 -0
- package/dist/charts/engineering/LoadLineChart.js +247 -0
- package/dist/charts/engineering/MohrCircle.js +256 -0
- package/dist/charts/engineering/MollierChart.js +235 -0
- package/dist/charts/engineering/MoodyDiagram.js +238 -0
- package/dist/charts/engineering/NicholsChart.js +190 -0
- package/dist/charts/engineering/NyquistHelix3D.js +149 -0
- package/dist/charts/engineering/NyquistPlot.js +201 -0
- package/dist/charts/engineering/PoleZeroPlot.js +124 -0
- package/dist/charts/engineering/PsychrometricChart.js +258 -0
- package/dist/charts/engineering/PumpCurveChart.js +310 -0
- package/dist/charts/engineering/RootLocusPlot.js +135 -0
- package/dist/charts/engineering/SParameterChart.js +214 -0
- package/dist/charts/engineering/SParameterData.js +69 -0
- package/dist/charts/engineering/SPlaneChart.js +71 -0
- package/dist/charts/engineering/SmithChart.js +259 -0
- package/dist/charts/engineering/SteamModel.js +154 -0
- package/dist/charts/engineering/StepResponseChart.js +201 -0
- package/dist/charts/engineering/StressStrainChart.js +243 -0
- package/dist/charts/engineering/ThermalProfileChart.js +255 -0
- package/dist/charts/engineering/TransferFunction.js +96 -0
- package/dist/charts/engineering/TransferSurface3D.js +208 -0
- package/dist/charts/engineering/index.js +53 -0
- package/dist/charts/financial/BollingerBands.js +123 -0
- package/dist/charts/financial/BrickChart.js +56 -0
- package/dist/charts/financial/Candlestick3D.js +157 -0
- package/dist/charts/financial/CandlestickChart.js +60 -0
- package/dist/charts/financial/DepthChart.js +255 -0
- package/dist/charts/financial/DrawdownChart.js +148 -0
- package/dist/charts/financial/DrawdownMath.js +51 -0
- package/dist/charts/financial/EquityBase.js +124 -0
- package/dist/charts/financial/EquityCurve.js +170 -0
- package/dist/charts/financial/FinanceInk.js +87 -0
- package/dist/charts/financial/FinanceMath.js +121 -0
- package/dist/charts/financial/HeikinAshiChart.js +58 -0
- package/dist/charts/financial/IchimokuCloud.js +112 -0
- package/dist/charts/financial/KagiChart.js +91 -0
- package/dist/charts/financial/LineBreakChart.js +52 -0
- package/dist/charts/financial/MACDChart.js +119 -0
- package/dist/charts/financial/MarketProfileChart.js +234 -0
- package/dist/charts/financial/OHLCChart.js +57 -0
- package/dist/charts/financial/OscillatorChart.js +56 -0
- package/dist/charts/financial/PayoffDiagram.js +288 -0
- package/dist/charts/financial/PointFigureChart.js +135 -0
- package/dist/charts/financial/PriceChart.js +168 -0
- package/dist/charts/financial/PriceMarks.js +64 -0
- package/dist/charts/financial/PriceTransforms.js +284 -0
- package/dist/charts/financial/ProjectionCone.js +134 -0
- package/dist/charts/financial/Quotes.js +74 -0
- package/dist/charts/financial/RSIChart.js +74 -0
- package/dist/charts/financial/RenkoChart.js +58 -0
- package/dist/charts/financial/ReturnCalendar.js +196 -0
- package/dist/charts/financial/SessionChart.js +194 -0
- package/dist/charts/financial/StochasticChart.js +77 -0
- package/dist/charts/financial/TpoProfile.js +172 -0
- package/dist/charts/financial/VolatilitySurface.js +197 -0
- package/dist/charts/financial/VolumeBars.js +160 -0
- package/dist/charts/financial/VolumeProfile.js +205 -0
- package/dist/charts/financial/YieldCurve.js +277 -0
- package/dist/charts/financial/financeEnums.js +269 -0
- package/dist/charts/financial/index.js +62 -0
- package/dist/charts/flow/AlluvialChart.js +129 -0
- package/dist/charts/flow/BumpFlow.js +212 -0
- package/dist/charts/flow/ChordFlow.js +262 -0
- package/dist/charts/flow/CircularSankey.js +239 -0
- package/dist/charts/flow/CohortFlow.js +333 -0
- package/dist/charts/flow/ConversionFlow.js +281 -0
- package/dist/charts/flow/DecisionTreeChart.js +332 -0
- package/dist/charts/flow/EnergyBalanceChart.js +287 -0
- package/dist/charts/flow/FlowChart.js +145 -0
- package/dist/charts/flow/FlowGraph.js +97 -0
- package/dist/charts/flow/FlowMapLess.js +229 -0
- package/dist/charts/flow/FlowNodeLinkChart.js +130 -0
- package/dist/charts/flow/FlowPathKit.js +114 -0
- package/dist/charts/flow/FlowSamples.js +109 -0
- package/dist/charts/flow/FlowTable.js +57 -0
- package/dist/charts/flow/LayeredLayout.js +106 -0
- package/dist/charts/flow/MarimekkoFlow.js +199 -0
- package/dist/charts/flow/MaxFlow.js +76 -0
- package/dist/charts/flow/NetworkFlowChart.js +204 -0
- package/dist/charts/flow/ParallelSets.js +120 -0
- package/dist/charts/flow/ProcessFlowChart.js +175 -0
- package/dist/charts/flow/RetentionFlow.js +242 -0
- package/dist/charts/flow/RibbonFlow.js +187 -0
- package/dist/charts/flow/SankeyChart.js +166 -0
- package/dist/charts/flow/StateTransitionChart.js +298 -0
- package/dist/charts/flow/StratumChart.js +184 -0
- package/dist/charts/flow/StreamFlow.js +174 -0
- package/dist/charts/flow/SwimFlowChart.js +191 -0
- package/dist/charts/flow/flowEnums.js +51 -0
- package/dist/charts/flow/index.js +51 -0
- package/dist/charts/genomics/CircosFrame.js +32 -0
- package/dist/charts/genomics/CircosPlot.js +319 -0
- package/dist/charts/genomics/GenomeAssembly.js +218 -0
- package/dist/charts/genomics/GenomeCytobands.js +157 -0
- package/dist/charts/genomics/GenomeIdeogram.js +422 -0
- package/dist/charts/genomics/GenomeSamples.js +478 -0
- package/dist/charts/genomics/GenomeStainScale.js +24 -0
- package/dist/charts/genomics/genomicsEnums.js +67 -0
- package/dist/charts/genomics/index.js +11 -0
- package/dist/charts/geoflows/ConnectionMap.js +137 -0
- package/dist/charts/geoflows/DensityFlowMap.js +184 -0
- package/dist/charts/geoflows/FlowGeometry.js +137 -0
- package/dist/charts/geoflows/FlowMap.js +104 -0
- package/dist/charts/geoflows/GeoBeeswarm.js +161 -0
- package/dist/charts/geoflows/GeoFlowChart.js +316 -0
- package/dist/charts/geoflows/GeoFlowFrame.js +97 -0
- package/dist/charts/geoflows/GeoFlowSample.js +252 -0
- package/dist/charts/geoflows/GeoLinkChart.js +155 -0
- package/dist/charts/geoflows/GeoPointChart.js +42 -0
- package/dist/charts/geoflows/GeoSankey.js +167 -0
- package/dist/charts/geoflows/GeoTrackChart.js +60 -0
- package/dist/charts/geoflows/GreatCircleArcMap.js +135 -0
- package/dist/charts/geoflows/HubSpokeMap.js +208 -0
- package/dist/charts/geoflows/IsochroneMap.js +198 -0
- package/dist/charts/geoflows/MeridianMap.js +161 -0
- package/dist/charts/geoflows/MigrationMap.js +228 -0
- package/dist/charts/geoflows/MinardFlowMap.js +158 -0
- package/dist/charts/geoflows/RingMap.js +173 -0
- package/dist/charts/geoflows/RouteMap.js +203 -0
- package/dist/charts/geoflows/SmallMultipleMaps.js +143 -0
- package/dist/charts/geoflows/SphericalVoronoi.js +125 -0
- package/dist/charts/geoflows/SpiderMap.js +184 -0
- package/dist/charts/geoflows/StormTrackMap.js +223 -0
- package/dist/charts/geoflows/TrajectoryMap.js +202 -0
- package/dist/charts/geoflows/VoronoiMap.js +123 -0
- package/dist/charts/geoflows/WindMap.js +293 -0
- package/dist/charts/geoflows/index.js +47 -0
- package/dist/charts/geomaps/BivariateChoropleth.js +117 -0
- package/dist/charts/geomaps/BubbleMap.js +115 -0
- package/dist/charts/geomaps/CartogramDorling.js +125 -0
- package/dist/charts/geomaps/ChoroplethBase.js +47 -0
- package/dist/charts/geomaps/ChoroplethMap.js +49 -0
- package/dist/charts/geomaps/ClippedGlobeMap.js +141 -0
- package/dist/charts/geomaps/ContourMap.js +97 -0
- package/dist/charts/geomaps/DotDensityMap.js +140 -0
- package/dist/charts/geomaps/DotMap.js +66 -0
- package/dist/charts/geomaps/DrillDownMap.js +132 -0
- package/dist/charts/geomaps/GeoChart.js +196 -0
- package/dist/charts/geomaps/GeoClasses.js +89 -0
- package/dist/charts/geomaps/GeoField.js +111 -0
- package/dist/charts/geomaps/GeoLand.js +29 -0
- package/dist/charts/geomaps/GeoLegend.js +56 -0
- package/dist/charts/geomaps/GeoProjection.js +159 -0
- package/dist/charts/geomaps/GeoSamples.js +139 -0
- package/dist/charts/geomaps/GeoViewport.js +148 -0
- package/dist/charts/geomaps/GraticuleMap.js +42 -0
- package/dist/charts/geomaps/HatchedChoropleth.js +110 -0
- package/dist/charts/geomaps/HeatMapGeo.js +114 -0
- package/dist/charts/geomaps/HexTileMap.js +96 -0
- package/dist/charts/geomaps/InsetMap.js +124 -0
- package/dist/charts/geomaps/LabelledMap.js +247 -0
- package/dist/charts/geomaps/NonContiguousCartogram.js +75 -0
- package/dist/charts/geomaps/PieChartMap.js +144 -0
- package/dist/charts/geomaps/PointDensityMap.js +109 -0
- package/dist/charts/geomaps/PointMap.js +93 -0
- package/dist/charts/geomaps/PrismLikeShadedMap.js +168 -0
- package/dist/charts/geomaps/ProportionalSymbolMap.js +144 -0
- package/dist/charts/geomaps/RegionMap.js +118 -0
- package/dist/charts/geomaps/RidgelineMap.js +109 -0
- package/dist/charts/geomaps/SlippyPointMap.js +128 -0
- package/dist/charts/geomaps/SlippyRegionMap.js +86 -0
- package/dist/charts/geomaps/SlippyView.js +134 -0
- package/dist/charts/geomaps/SpikeMap.js +103 -0
- package/dist/charts/geomaps/ThiessenMap.js +106 -0
- package/dist/charts/geomaps/TileGridMap.js +93 -0
- package/dist/charts/geomaps/TileMap.js +75 -0
- package/dist/charts/geomaps/TissotMap.js +90 -0
- package/dist/charts/geomaps/UsCountyMap.js +59 -0
- package/dist/charts/geomaps/UsMapBase.js +43 -0
- package/dist/charts/geomaps/UsStateMap.js +68 -0
- package/dist/charts/geomaps/index.js +74 -0
- package/dist/charts/hierarchy/AdjacencyChart.js +87 -0
- package/dist/charts/hierarchy/BalloonTree.js +136 -0
- package/dist/charts/hierarchy/CartesianTreeChart.js +125 -0
- package/dist/charts/hierarchy/CirclePackChart.js +92 -0
- package/dist/charts/hierarchy/CollapsibleTree.js +70 -0
- package/dist/charts/hierarchy/ConeTree3D.js +135 -0
- package/dist/charts/hierarchy/DecompositionTree.js +175 -0
- package/dist/charts/hierarchy/DendrogramChart.js +71 -0
- package/dist/charts/hierarchy/FishboneDiagram.js +138 -0
- package/dist/charts/hierarchy/FlameGraph.js +66 -0
- package/dist/charts/hierarchy/Hierarchy3DChart.js +27 -0
- package/dist/charts/hierarchy/HierarchyChart.js +83 -0
- package/dist/charts/hierarchy/IcicleChart.js +56 -0
- package/dist/charts/hierarchy/IcicleZoom.js +91 -0
- package/dist/charts/hierarchy/IndentedTreeChart.js +130 -0
- package/dist/charts/hierarchy/MindMap.js +143 -0
- package/dist/charts/hierarchy/NestedTreemap.js +121 -0
- package/dist/charts/hierarchy/OrgChart.js +240 -0
- package/dist/charts/hierarchy/PartitionChart.js +116 -0
- package/dist/charts/hierarchy/PhylogeneticTree.js +245 -0
- package/dist/charts/hierarchy/PolarFrame.js +35 -0
- package/dist/charts/hierarchy/RadialDendrogram.js +64 -0
- package/dist/charts/hierarchy/RadialTreeBase.js +95 -0
- package/dist/charts/hierarchy/RadialTreeChart.js +43 -0
- package/dist/charts/hierarchy/SpherePack3D.js +81 -0
- package/dist/charts/hierarchy/SunburstChart.js +126 -0
- package/dist/charts/hierarchy/SunburstTower3D.js +93 -0
- package/dist/charts/hierarchy/TidyTreeChart.js +42 -0
- package/dist/charts/hierarchy/TreeLinks.js +57 -0
- package/dist/charts/hierarchy/TreeModel.js +137 -0
- package/dist/charts/hierarchy/TreeNodeLinkChart.js +50 -0
- package/dist/charts/hierarchy/TreeSamples.js +51 -0
- package/dist/charts/hierarchy/TreeStyle.js +91 -0
- package/dist/charts/hierarchy/TreemapChart.js +104 -0
- package/dist/charts/hierarchy/TreemapSkyline3D.js +98 -0
- package/dist/charts/hierarchy/TreemapTiling.js +16 -0
- package/dist/charts/hierarchy/ZoomAdjacencyChart.js +18 -0
- package/dist/charts/hierarchy/hierarchyEnums.js +226 -0
- package/dist/charts/hierarchy/index.js +62 -0
- package/dist/charts/indicators/ActivityRings.js +139 -0
- package/dist/charts/indicators/BatteryChart.js +136 -0
- package/dist/charts/indicators/BulletChart.js +216 -0
- package/dist/charts/indicators/DeltaIndicator.js +254 -0
- package/dist/charts/indicators/DialChart.js +66 -0
- package/dist/charts/indicators/GaugeChart.js +170 -0
- package/dist/charts/indicators/HarveyBalls.js +182 -0
- package/dist/charts/indicators/IndicatorChart.js +293 -0
- package/dist/charts/indicators/IndicatorEnums.js +331 -0
- package/dist/charts/indicators/IndicatorSamples.js +18 -0
- package/dist/charts/indicators/KpiTile.js +249 -0
- package/dist/charts/indicators/LiquidFillGauge.js +180 -0
- package/dist/charts/indicators/MeterChart.js +244 -0
- package/dist/charts/indicators/ProgressRing.js +107 -0
- package/dist/charts/indicators/RadialProgress.js +114 -0
- package/dist/charts/indicators/RatingStars.js +257 -0
- package/dist/charts/indicators/ScoreCard.js +172 -0
- package/dist/charts/indicators/SegmentedGauge.js +133 -0
- package/dist/charts/indicators/SpeedometerChart.js +142 -0
- package/dist/charts/indicators/StepProgress.js +170 -0
- package/dist/charts/indicators/TallyChart.js +268 -0
- package/dist/charts/indicators/TargetChart.js +160 -0
- package/dist/charts/indicators/ThermometerChart.js +144 -0
- package/dist/charts/indicators/TrafficLightChart.js +235 -0
- package/dist/charts/indicators/VuMeterChart.js +155 -0
- package/dist/charts/indicators/index.js +49 -0
- package/dist/charts/linesareas/AreaChart.js +76 -0
- package/dist/charts/linesareas/BumpChart.js +155 -0
- package/dist/charts/linesareas/ConnectedScatterTime.js +206 -0
- package/dist/charts/linesareas/CumulativeLine.js +115 -0
- package/dist/charts/linesareas/DifferenceChart.js +168 -0
- package/dist/charts/linesareas/DualAxisChart.js +151 -0
- package/dist/charts/linesareas/FanChart.js +135 -0
- package/dist/charts/linesareas/ForecastLine.js +161 -0
- package/dist/charts/linesareas/HorizonChart.js +134 -0
- package/dist/charts/linesareas/IndexedLine.js +94 -0
- package/dist/charts/linesareas/LayeredChart.js +97 -0
- package/dist/charts/linesareas/LineChart.js +76 -0
- package/dist/charts/linesareas/LineEnums.js +267 -0
- package/dist/charts/linesareas/MultiLineChart.js +97 -0
- package/dist/charts/linesareas/RangeAreaChart.js +148 -0
- package/dist/charts/linesareas/RidgeLines.js +118 -0
- package/dist/charts/linesareas/SeasonalLines.js +134 -0
- package/dist/charts/linesareas/SlopeChart.js +183 -0
- package/dist/charts/linesareas/SmallMultipleLines.js +153 -0
- package/dist/charts/linesareas/SparklineChart.js +211 -0
- package/dist/charts/linesareas/StackedAreaChart.js +67 -0
- package/dist/charts/linesareas/StepChart.js +85 -0
- package/dist/charts/linesareas/Streamgraph.js +70 -0
- package/dist/charts/linesareas/ThresholdAreaChart.js +133 -0
- package/dist/charts/linesareas/TrendChart.js +290 -0
- package/dist/charts/linesareas/TrendHover.js +55 -0
- package/dist/charts/linesareas/TrendLabels.js +32 -0
- package/dist/charts/linesareas/TrendMath.js +62 -0
- package/dist/charts/linesareas/TrendTable.js +87 -0
- package/dist/charts/linesareas/index.js +55 -0
- package/dist/charts/massive/CanvasSurface.js +174 -0
- package/dist/charts/massive/LttbDecimator.js +50 -0
- package/dist/charts/massive/MassiveChart.js +408 -0
- package/dist/charts/massive/MassiveColorTable.js +31 -0
- package/dist/charts/massive/MassiveDensityChart.js +46 -0
- package/dist/charts/massive/MassiveDensityRaster.js +124 -0
- package/dist/charts/massive/MassiveEnums.js +22 -0
- package/dist/charts/massive/MassiveLineChart.js +82 -0
- package/dist/charts/massive/MassiveLineLayer.js +42 -0
- package/dist/charts/massive/MassiveLineSeries.js +63 -0
- package/dist/charts/massive/MassiveMarkLayer.js +38 -0
- package/dist/charts/massive/MassiveNearestIndex.js +90 -0
- package/dist/charts/massive/MassivePointColumns.js +84 -0
- package/dist/charts/massive/MassiveScatterChart.js +57 -0
- package/dist/charts/massive/MassiveTypes.js +4 -0
- package/dist/charts/massive/MinMaxDecimator.js +56 -0
- package/dist/charts/massive/PassThroughDecimator.js +13 -0
- package/dist/charts/massive/index.js +24 -0
- package/dist/charts/mathematical/ArgandDiagram.js +222 -0
- package/dist/charts/mathematical/BandRaster.js +34 -0
- package/dist/charts/mathematical/BifurcationDiagram.js +155 -0
- package/dist/charts/mathematical/CobwebPlot.js +133 -0
- package/dist/charts/mathematical/ComplexDomainColoring.js +188 -0
- package/dist/charts/mathematical/FibonacciSpiralChart.js +255 -0
- package/dist/charts/mathematical/FieldPlot.js +131 -0
- package/dist/charts/mathematical/FourierSeriesChart.js +270 -0
- package/dist/charts/mathematical/FunctionCurves.js +33 -0
- package/dist/charts/mathematical/FunctionPlot.js +188 -0
- package/dist/charts/mathematical/ImplicitPlot.js +153 -0
- package/dist/charts/mathematical/IterationMap.js +62 -0
- package/dist/charts/mathematical/LissajousChart.js +242 -0
- package/dist/charts/mathematical/MandelbrotChart.js +191 -0
- package/dist/charts/mathematical/MathMarks.js +63 -0
- package/dist/charts/mathematical/MathNumerics.js +168 -0
- package/dist/charts/mathematical/MathPlane.js +207 -0
- package/dist/charts/mathematical/NumberLineChart.js +261 -0
- package/dist/charts/mathematical/ParametricPlot.js +203 -0
- package/dist/charts/mathematical/ParametricSurface3D.js +234 -0
- package/dist/charts/mathematical/PhasePortrait.js +210 -0
- package/dist/charts/mathematical/PolarCurvePlot.js +190 -0
- package/dist/charts/mathematical/RiemannSumChart.js +185 -0
- package/dist/charts/mathematical/SetRelationChart.js +393 -0
- package/dist/charts/mathematical/SlopeFieldChart.js +145 -0
- package/dist/charts/mathematical/StrangeAttractor3D.js +251 -0
- package/dist/charts/mathematical/StreamlineChart.js +159 -0
- package/dist/charts/mathematical/TaylorSeriesChart.js +175 -0
- package/dist/charts/mathematical/VectorFieldChart.js +140 -0
- package/dist/charts/mathematical/index.js +51 -0
- package/dist/charts/matrix/BubbleMatrix.js +108 -0
- package/dist/charts/matrix/ClusteredHeatmap.js +177 -0
- package/dist/charts/matrix/CohortMatrix.js +139 -0
- package/dist/charts/matrix/ConfusionMatrix.js +186 -0
- package/dist/charts/matrix/ContingencyChart.js +201 -0
- package/dist/charts/matrix/CorrelationMatrix.js +167 -0
- package/dist/charts/matrix/DiagonalMatrix.js +151 -0
- package/dist/charts/matrix/GridPlot.js +186 -0
- package/dist/charts/matrix/HeatmapChart.js +124 -0
- package/dist/charts/matrix/HintonDiagram.js +92 -0
- package/dist/charts/matrix/MatrixChart.js +209 -0
- package/dist/charts/matrix/MatrixDotChart.js +98 -0
- package/dist/charts/matrix/MatrixGlyphs.js +82 -0
- package/dist/charts/matrix/MatrixModel.js +99 -0
- package/dist/charts/matrix/MatrixSeriation.js +162 -0
- package/dist/charts/matrix/MatrixSurface.js +43 -0
- package/dist/charts/matrix/MatrixTowers3D.js +152 -0
- package/dist/charts/matrix/PunchCard.js +153 -0
- package/dist/charts/matrix/RecurrencePlot.js +177 -0
- package/dist/charts/matrix/RiskMatrix.js +264 -0
- package/dist/charts/matrix/SeriationMatrix.js +151 -0
- package/dist/charts/matrix/SortedMatrix.js +136 -0
- package/dist/charts/matrix/SpyPlot.js +163 -0
- package/dist/charts/matrix/TableHeatmap.js +175 -0
- package/dist/charts/matrix/TilegramChart.js +203 -0
- package/dist/charts/matrix/TriangleMatrix.js +146 -0
- package/dist/charts/matrix/WaffleMatrix.js +145 -0
- package/dist/charts/matrix/index.js +53 -0
- package/dist/charts/matrix/matrixEnums.js +48 -0
- package/dist/charts/multivariate/AnchoredProjection.js +45 -0
- package/dist/charts/multivariate/AndrewsCurves.js +193 -0
- package/dist/charts/multivariate/ConditionalPlot.js +137 -0
- package/dist/charts/multivariate/CrossfilterHistograms.js +247 -0
- package/dist/charts/multivariate/DimensionalStacking.js +205 -0
- package/dist/charts/multivariate/GlyphPlot.js +212 -0
- package/dist/charts/multivariate/HeatedParallelSets.js +236 -0
- package/dist/charts/multivariate/HyperboxChart.js +200 -0
- package/dist/charts/multivariate/InstancedSticks.js +32 -0
- package/dist/charts/multivariate/MultiDimensionalScaling.js +93 -0
- package/dist/charts/multivariate/MultivariateKit.js +168 -0
- package/dist/charts/multivariate/MultivariateMath.js +196 -0
- package/dist/charts/multivariate/MultivariateSample.js +42 -0
- package/dist/charts/multivariate/PCABiplot.js +141 -0
- package/dist/charts/multivariate/PCAScatter3D.js +217 -0
- package/dist/charts/multivariate/PanelScatter.js +88 -0
- package/dist/charts/multivariate/ParallelCoordinates.js +262 -0
- package/dist/charts/multivariate/ParallelPlanes3D.js +175 -0
- package/dist/charts/multivariate/PixelBarChart.js +201 -0
- package/dist/charts/multivariate/ProjectionChart.js +55 -0
- package/dist/charts/multivariate/RadViz.js +89 -0
- package/dist/charts/multivariate/SankeyMultivariate.js +178 -0
- package/dist/charts/multivariate/ScatterplotMatrix.js +310 -0
- package/dist/charts/multivariate/StarCoordinates.js +130 -0
- package/dist/charts/multivariate/SurveyPlot.js +159 -0
- package/dist/charts/multivariate/TableChart.js +270 -0
- package/dist/charts/multivariate/TrellisScatter.js +93 -0
- package/dist/charts/multivariate/WideTable.js +67 -0
- package/dist/charts/multivariate/index.js +52 -0
- package/dist/charts/network/AdjacencyMatrixChart.js +189 -0
- package/dist/charts/network/ArcDiagram.js +129 -0
- package/dist/charts/network/BioFabricChart.js +173 -0
- package/dist/charts/network/BipartiteChart.js +135 -0
- package/dist/charts/network/ChordDiagram.js +143 -0
- package/dist/charts/network/CircularLayoutGraph.js +120 -0
- package/dist/charts/network/ClusteredForceChart.js +131 -0
- package/dist/charts/network/CommunityChart.js +305 -0
- package/dist/charts/network/ContactMap.js +186 -0
- package/dist/charts/network/EdgeRouter.js +181 -0
- package/dist/charts/network/EgoNetworkChart.js +157 -0
- package/dist/charts/network/ForceGraphChart.js +97 -0
- package/dist/charts/network/GeoFreeNodeLink.js +127 -0
- package/dist/charts/network/GraphCommunities.js +101 -0
- package/dist/charts/network/GraphLayouts.js +154 -0
- package/dist/charts/network/GraphMetrics.js +97 -0
- package/dist/charts/network/GraphOrder.js +56 -0
- package/dist/charts/network/GraphTrees.js +131 -0
- package/dist/charts/network/GridLayoutGraph.js +164 -0
- package/dist/charts/network/GroupInABox.js +185 -0
- package/dist/charts/network/HierarchicalEdgeBundling.js +194 -0
- package/dist/charts/network/HiveChart.js +195 -0
- package/dist/charts/network/LabelPlacer.js +95 -0
- package/dist/charts/network/NetworkChart.js +189 -0
- package/dist/charts/network/NetworkModel.js +119 -0
- package/dist/charts/network/NetworkSamples.js +127 -0
- package/dist/charts/network/NodeLinkNetwork.js +91 -0
- package/dist/charts/network/PivotGraph.js +149 -0
- package/dist/charts/network/RadialNetwork.js +155 -0
- package/dist/charts/network/SpanningTreeChart.js +117 -0
- package/dist/charts/network/StressLayoutGraph.js +63 -0
- package/dist/charts/network/SugiyamaDagChart.js +170 -0
- package/dist/charts/network/SugiyamaLayout.js +210 -0
- package/dist/charts/network/TreeOfNetwork.js +241 -0
- package/dist/charts/network/index.js +53 -0
- package/dist/charts/network/networkEnums.js +53 -0
- package/dist/charts/pictorial/ArrowGlyphs.js +191 -0
- package/dist/charts/pictorial/BoxCanvas.js +84 -0
- package/dist/charts/pictorial/BubbleText.js +240 -0
- package/dist/charts/pictorial/ColorSwatchChart.js +219 -0
- package/dist/charts/pictorial/ConcordanceChart.js +209 -0
- package/dist/charts/pictorial/Corpus.js +49 -0
- package/dist/charts/pictorial/FaceGlyphs.js +125 -0
- package/dist/charts/pictorial/GlyphChart.js +232 -0
- package/dist/charts/pictorial/IconArray.js +207 -0
- package/dist/charts/pictorial/IsotypeChart.js +155 -0
- package/dist/charts/pictorial/PictogramChart.js +120 -0
- package/dist/charts/pictorial/PictorialIcons.js +30 -0
- package/dist/charts/pictorial/PolarGlyphMatrix.js +200 -0
- package/dist/charts/pictorial/SankeyText.js +250 -0
- package/dist/charts/pictorial/SentimentStrip.js +178 -0
- package/dist/charts/pictorial/ShapeGrid.js +198 -0
- package/dist/charts/pictorial/StarGlyphs.js +89 -0
- package/dist/charts/pictorial/TagChart.js +181 -0
- package/dist/charts/pictorial/TextMetrics.js +31 -0
- package/dist/charts/pictorial/TextTreemap.js +142 -0
- package/dist/charts/pictorial/UnitChart.js +49 -0
- package/dist/charts/pictorial/WeatherGlyphs.js +199 -0
- package/dist/charts/pictorial/WordChart.js +41 -0
- package/dist/charts/pictorial/WordCloudChart.js +141 -0
- package/dist/charts/pictorial/WordTreeChart.js +198 -0
- package/dist/charts/pictorial/index.js +44 -0
- package/dist/charts/proportion/BarOfPie.js +181 -0
- package/dist/charts/proportion/ConeFunnel.js +126 -0
- package/dist/charts/proportion/DonutChart.js +103 -0
- package/dist/charts/proportion/DotMatrixChart.js +168 -0
- package/dist/charts/proportion/EulerDiagram.js +75 -0
- package/dist/charts/proportion/EulerLayout.js +91 -0
- package/dist/charts/proportion/ExplodedPie.js +70 -0
- package/dist/charts/proportion/ExtrudedPieChart.js +123 -0
- package/dist/charts/proportion/FunnelChart.js +204 -0
- package/dist/charts/proportion/MosaicChart.js +224 -0
- package/dist/charts/proportion/NestedDonut.js +182 -0
- package/dist/charts/proportion/ParliamentChart.js +221 -0
- package/dist/charts/proportion/PieBase.js +189 -0
- package/dist/charts/proportion/PieChart.js +44 -0
- package/dist/charts/proportion/PiePerCategory.js +132 -0
- package/dist/charts/proportion/PowerDiagram.js +112 -0
- package/dist/charts/proportion/ProportionalAreaChart.js +191 -0
- package/dist/charts/proportion/PyramidChart.js +154 -0
- package/dist/charts/proportion/SemiDonutChart.js +106 -0
- package/dist/charts/proportion/SetData.js +56 -0
- package/dist/charts/proportion/SetDiagram.js +94 -0
- package/dist/charts/proportion/SetRegions.js +52 -0
- package/dist/charts/proportion/ShareChart.js +22 -0
- package/dist/charts/proportion/ShareData.js +94 -0
- package/dist/charts/proportion/ShareEnums.js +34 -0
- package/dist/charts/proportion/TreemapBar.js +155 -0
- package/dist/charts/proportion/UpSetPlot.js +245 -0
- package/dist/charts/proportion/VennDiagram.js +155 -0
- package/dist/charts/proportion/VoronoiShareChart.js +139 -0
- package/dist/charts/proportion/Waffle3DChart.js +164 -0
- package/dist/charts/proportion/WaffleChart.js +184 -0
- package/dist/charts/proportion/index.js +57 -0
- package/dist/charts/radial/CircularBarplot.js +122 -0
- package/dist/charts/radial/CircularHeatmap.js +140 -0
- package/dist/charts/radial/ClockChart.js +221 -0
- package/dist/charts/radial/CoxcombChart.js +125 -0
- package/dist/charts/radial/Polar.js +125 -0
- package/dist/charts/radial/PolarAreaChart.js +90 -0
- package/dist/charts/radial/PolarBase.js +227 -0
- package/dist/charts/radial/PolarScatter.js +146 -0
- package/dist/charts/radial/RadarChart.js +145 -0
- package/dist/charts/radial/RadialAreaChart.js +103 -0
- package/dist/charts/radial/RadialBarChart.js +169 -0
- package/dist/charts/radial/RadialBoxPlot.js +210 -0
- package/dist/charts/radial/RadialColumnChart.js +119 -0
- package/dist/charts/radial/RadialDumbbell.js +143 -0
- package/dist/charts/radial/RadialGantt.js +153 -0
- package/dist/charts/radial/RadialHistogram.js +179 -0
- package/dist/charts/radial/RadialLineChart.js +84 -0
- package/dist/charts/radial/RadialStackedArea.js +89 -0
- package/dist/charts/radial/RoseChart.js +113 -0
- package/dist/charts/radial/SpiralChart.js +188 -0
- package/dist/charts/radial/SunburstBar.js +140 -0
- package/dist/charts/radial/TemporalPolar.js +110 -0
- package/dist/charts/radial/WindRoseChart.js +164 -0
- package/dist/charts/radial/index.js +47 -0
- package/dist/charts/radial/radialEnums.js +201 -0
- package/dist/charts/scatter/BeeswarmScatter.js +151 -0
- package/dist/charts/scatter/BinnedScatterBase.js +51 -0
- package/dist/charts/scatter/BubbleChart.js +123 -0
- package/dist/charts/scatter/CategoryScatterBase.js +167 -0
- package/dist/charts/scatter/ChangeScatter.js +142 -0
- package/dist/charts/scatter/ConnectedScatter.js +141 -0
- package/dist/charts/scatter/ContourScatter.js +116 -0
- package/dist/charts/scatter/ConvexHullScatter.js +168 -0
- package/dist/charts/scatter/DropLineScatter.js +121 -0
- package/dist/charts/scatter/EllipseScatter.js +194 -0
- package/dist/charts/scatter/ErrorBarScatter.js +177 -0
- package/dist/charts/scatter/GridBinScatter.js +98 -0
- package/dist/charts/scatter/HexbinScatter.js +74 -0
- package/dist/charts/scatter/JitterPlot.js +103 -0
- package/dist/charts/scatter/LabelledScatter.js +272 -0
- package/dist/charts/scatter/MarginalScatter.js +251 -0
- package/dist/charts/scatter/ParetoScatter.js +146 -0
- package/dist/charts/scatter/QuadrantChart.js +195 -0
- package/dist/charts/scatter/Regression.js +157 -0
- package/dist/charts/scatter/RegressionScatter.js +142 -0
- package/dist/charts/scatter/RugScatter.js +138 -0
- package/dist/charts/scatter/ScatterBase.js +283 -0
- package/dist/charts/scatter/ScatterGeometry.js +95 -0
- package/dist/charts/scatter/ScatterPlot.js +36 -0
- package/dist/charts/scatter/StripScatter.js +107 -0
- package/dist/charts/scatter/SunflowerScatter.js +109 -0
- package/dist/charts/scatter/VoronoiScatter.js +128 -0
- package/dist/charts/scatter/index.js +53 -0
- package/dist/charts/scientific/Atmosphere.js +57 -0
- package/dist/charts/scientific/ChromatogramChart.js +213 -0
- package/dist/charts/scientific/ClimateChart.js +71 -0
- package/dist/charts/scientific/ClimographChart.js +273 -0
- package/dist/charts/scientific/Draft.js +89 -0
- package/dist/charts/scientific/ElectrophoresisGel.js +240 -0
- package/dist/charts/scientific/GridContours.js +29 -0
- package/dist/charts/scientific/HertzsprungRussell.js +272 -0
- package/dist/charts/scientific/HodographChart.js +265 -0
- package/dist/charts/scientific/MassSpectrumChart.js +180 -0
- package/dist/charts/scientific/PeakFinder.js +31 -0
- package/dist/charts/scientific/PeriodicElements.js +111 -0
- package/dist/charts/scientific/PeriodicTableChart.js +206 -0
- package/dist/charts/scientific/PhaseDiagram.js +392 -0
- package/dist/charts/scientific/PiperDiagram.js +286 -0
- package/dist/charts/scientific/RoseStrainChart.js +305 -0
- package/dist/charts/scientific/ScientificSample.js +413 -0
- package/dist/charts/scientific/SequenceLogoChart.js +225 -0
- package/dist/charts/scientific/Simplex.js +155 -0
- package/dist/charts/scientific/SkewTChart.js +257 -0
- package/dist/charts/scientific/SoilTextureChart.js +592 -0
- package/dist/charts/scientific/SpectralAnalysis.js +59 -0
- package/dist/charts/scientific/SpectrogramChart.js +230 -0
- package/dist/charts/scientific/StereonetChart.js +268 -0
- package/dist/charts/scientific/StiffDiagram.js +271 -0
- package/dist/charts/scientific/TaylorDiagram.js +253 -0
- package/dist/charts/scientific/TernaryPlot.js +268 -0
- package/dist/charts/scientific/WalterLiethChart.js +213 -0
- package/dist/charts/scientific/index.js +44 -0
- package/dist/charts/signals/AudiogramChart.js +235 -0
- package/dist/charts/signals/CepstrumChart.js +161 -0
- package/dist/charts/signals/ConstellationChart.js +153 -0
- package/dist/charts/signals/CorrelogramChart.js +171 -0
- package/dist/charts/signals/ECGChart.js +358 -0
- package/dist/charts/signals/EnvelopeChart.js +137 -0
- package/dist/charts/signals/EyeDiagramChart.js +155 -0
- package/dist/charts/signals/FilterResponseChart.js +264 -0
- package/dist/charts/signals/ImpulseResponseChart.js +199 -0
- package/dist/charts/signals/LogicAnalyzerChart.js +173 -0
- package/dist/charts/signals/OscilloscopeChart.js +229 -0
- package/dist/charts/signals/PeriodogramChart.js +155 -0
- package/dist/charts/signals/PhaseSpace3DChart.js +190 -0
- package/dist/charts/signals/PhaseSpaceChart.js +148 -0
- package/dist/charts/signals/PoleZeroChart.js +164 -0
- package/dist/charts/signals/SeismogramChart.js +237 -0
- package/dist/charts/signals/SignalChart.js +164 -0
- package/dist/charts/signals/SignalDsp.js +328 -0
- package/dist/charts/signals/SignalEnums.js +32 -0
- package/dist/charts/signals/SignalRaster.js +36 -0
- package/dist/charts/signals/SignalSamples.js +107 -0
- package/dist/charts/signals/SignalScales.js +56 -0
- package/dist/charts/signals/SpectralChart.js +23 -0
- package/dist/charts/signals/SpectrogramChart.js +79 -0
- package/dist/charts/signals/SpectrumChart.js +160 -0
- package/dist/charts/signals/StemSignalChart.js +172 -0
- package/dist/charts/signals/TimeDomainDiffChart.js +202 -0
- package/dist/charts/signals/TimeFrequencyChart.js +84 -0
- package/dist/charts/signals/WaterfallSpectrum.js +131 -0
- package/dist/charts/signals/WaterfallSurface3DChart.js +220 -0
- package/dist/charts/signals/WaveformChart.js +174 -0
- package/dist/charts/signals/WaveletScalogram.js +120 -0
- package/dist/charts/signals/index.js +60 -0
- package/dist/charts/statistics/AttributeControlChart.js +115 -0
- package/dist/charts/statistics/AutocorrelationPlot.js +76 -0
- package/dist/charts/statistics/BlandAltmanPlot.js +251 -0
- package/dist/charts/statistics/CalibrationPlot.js +213 -0
- package/dist/charts/statistics/ClassifierCurveBase.js +94 -0
- package/dist/charts/statistics/ControlChart.js +215 -0
- package/dist/charts/statistics/CooksDistancePlot.js +161 -0
- package/dist/charts/statistics/CorrelogramBase.js +152 -0
- package/dist/charts/statistics/CrossCorrelationPlot.js +66 -0
- package/dist/charts/statistics/CusumChart.js +132 -0
- package/dist/charts/statistics/DetectionErrorCurve.js +108 -0
- package/dist/charts/statistics/EwmaChart.js +99 -0
- package/dist/charts/statistics/ForestPlot.js +221 -0
- package/dist/charts/statistics/FunnelPlot.js +196 -0
- package/dist/charts/statistics/InteractionPlot.js +207 -0
- package/dist/charts/statistics/KaplanMeierCurve.js +249 -0
- package/dist/charts/statistics/LagPlot.js +96 -0
- package/dist/charts/statistics/LiftChart.js +178 -0
- package/dist/charts/statistics/LorenzCurve.js +186 -0
- package/dist/charts/statistics/ManhattanPlot.js +222 -0
- package/dist/charts/statistics/MetaAnalysis.js +76 -0
- package/dist/charts/statistics/PPPlot.js +126 -0
- package/dist/charts/statistics/PartialAutocorrelation.js +77 -0
- package/dist/charts/statistics/PrecisionRecallCurve.js +157 -0
- package/dist/charts/statistics/ProcessChartBase.js +130 -0
- package/dist/charts/statistics/ProcessRules.js +39 -0
- package/dist/charts/statistics/QQPlot.js +191 -0
- package/dist/charts/statistics/ROCCurve.js +186 -0
- package/dist/charts/statistics/ReferenceLaw.js +64 -0
- package/dist/charts/statistics/RegressionFit.js +79 -0
- package/dist/charts/statistics/RegressionInfluencePlot.js +148 -0
- package/dist/charts/statistics/ResidualPlot.js +173 -0
- package/dist/charts/statistics/ScreePlot.js +210 -0
- package/dist/charts/statistics/SilhouettePlot.js +217 -0
- package/dist/charts/statistics/StatMath.js +202 -0
- package/dist/charts/statistics/StatisticalChart.js +197 -0
- package/dist/charts/statistics/VolcanoPlot.js +196 -0
- package/dist/charts/statistics/index.js +69 -0
- package/dist/charts/structure/DependencyMatrix.js +302 -0
- package/dist/charts/structure/DependencyOrdering.js +76 -0
- package/dist/charts/structure/MareyChart.js +270 -0
- package/dist/charts/structure/MareyTimetable.js +116 -0
- package/dist/charts/structure/StructureText.js +14 -0
- package/dist/charts/structure/TournamentBracket.js +255 -0
- package/dist/charts/structure/TournamentDraw.js +209 -0
- package/dist/charts/structure/TournamentLayout.js +216 -0
- package/dist/charts/structure/UmlClassDiagram.js +435 -0
- package/dist/charts/structure/UmlLayout.js +366 -0
- package/dist/charts/structure/index.js +17 -0
- package/dist/charts/structure/structureEnums.js +81 -0
- package/dist/charts/threebars/Area3DChart.js +132 -0
- package/dist/charts/threebars/Bar3DChart.js +56 -0
- package/dist/charts/threebars/BarField3DChart.js +125 -0
- package/dist/charts/threebars/Bubble3DChart.js +89 -0
- package/dist/charts/threebars/Candlestick3DChart.js +248 -0
- package/dist/charts/threebars/Cartesian3DChart.js +249 -0
- package/dist/charts/threebars/CurveSampler3D.js +36 -0
- package/dist/charts/threebars/Cylinder3DBars.js +54 -0
- package/dist/charts/threebars/Donut3DChart.js +58 -0
- package/dist/charts/threebars/Funnel3DChart.js +86 -0
- package/dist/charts/threebars/Histogram3DChart.js +239 -0
- package/dist/charts/threebars/Line3DChart.js +113 -0
- package/dist/charts/threebars/Lollipop3DChart.js +66 -0
- package/dist/charts/threebars/Marks3D.js +127 -0
- package/dist/charts/threebars/Pie3DChart.js +42 -0
- package/dist/charts/threebars/PointCloud3DChart.js +140 -0
- package/dist/charts/threebars/Polyline3D.js +17 -0
- package/dist/charts/threebars/Pyramid3DChart.js +85 -0
- package/dist/charts/threebars/Radar3DChart.js +245 -0
- package/dist/charts/threebars/Ribbon3DChart.js +135 -0
- package/dist/charts/threebars/Round3DChart.js +166 -0
- package/dist/charts/threebars/Rows3D.js +44 -0
- package/dist/charts/threebars/Scatter3DChart.js +152 -0
- package/dist/charts/threebars/Series3DChart.js +124 -0
- package/dist/charts/threebars/Stacked3DBars.js +166 -0
- package/dist/charts/threebars/Stem3DChart.js +155 -0
- package/dist/charts/threebars/Tier3DChart.js +85 -0
- package/dist/charts/threebars/Waterfall3DChart.js +156 -0
- package/dist/charts/threebars/index.js +47 -0
- package/dist/charts/threeglobe/ArcGlobeChart.js +84 -0
- package/dist/charts/threeglobe/Bubble3DMap.js +73 -0
- package/dist/charts/threeglobe/ChoroplethGlobe.js +70 -0
- package/dist/charts/threeglobe/ContourGlobe.js +117 -0
- package/dist/charts/threeglobe/CylinderSurface.js +39 -0
- package/dist/charts/threeglobe/DotDensityGlobe.js +117 -0
- package/dist/charts/threeglobe/ExtrudedMapChart.js +68 -0
- package/dist/charts/threeglobe/FlatProjectionPlane.js +64 -0
- package/dist/charts/threeglobe/FlowGlobeChart.js +95 -0
- package/dist/charts/threeglobe/GeoField.js +49 -0
- package/dist/charts/threeglobe/GeoMesher.js +146 -0
- package/dist/charts/threeglobe/GeoRings.js +37 -0
- package/dist/charts/threeglobe/GeoSurface.js +30 -0
- package/dist/charts/threeglobe/Globe3DChart.js +59 -0
- package/dist/charts/threeglobe/GlobeChart.js +287 -0
- package/dist/charts/threeglobe/GlobeEnums.js +230 -0
- package/dist/charts/threeglobe/GlobeMath.js +25 -0
- package/dist/charts/threeglobe/GlobeProjections.js +18 -0
- package/dist/charts/threeglobe/GlobeSamples.js +74 -0
- package/dist/charts/threeglobe/Graticule3DGlobe.js +91 -0
- package/dist/charts/threeglobe/HeatGlobe.js +107 -0
- package/dist/charts/threeglobe/HexGlobe.js +118 -0
- package/dist/charts/threeglobe/LinkGlobeChart.js +55 -0
- package/dist/charts/threeglobe/MapPlaneChart.js +14 -0
- package/dist/charts/threeglobe/MeshBuffer.js +137 -0
- package/dist/charts/threeglobe/OwnedMesh.js +12 -0
- package/dist/charts/threeglobe/PlaneSurface.js +69 -0
- package/dist/charts/threeglobe/PointGlobeChart.js +83 -0
- package/dist/charts/threeglobe/PrismMapChart.js +96 -0
- package/dist/charts/threeglobe/RegionGlobeChart.js +81 -0
- package/dist/charts/threeglobe/RibbonGlobe.js +81 -0
- package/dist/charts/threeglobe/RingGlobe.js +106 -0
- package/dist/charts/threeglobe/SiteGlobeChart.js +53 -0
- package/dist/charts/threeglobe/SphereGrid.js +90 -0
- package/dist/charts/threeglobe/SphereSurface.js +40 -0
- package/dist/charts/threeglobe/SpikeGlobeChart.js +80 -0
- package/dist/charts/threeglobe/StreamGlobe.js +141 -0
- package/dist/charts/threeglobe/Tile3DMap.js +102 -0
- package/dist/charts/threeglobe/TrajectoryGlobe.js +138 -0
- package/dist/charts/threeglobe/index.js +59 -0
- package/dist/charts/threenetwork/Arc3DDiagram.js +105 -0
- package/dist/charts/threenetwork/Calendar3DChart.js +179 -0
- package/dist/charts/threenetwork/Chord3DChart.js +150 -0
- package/dist/charts/threenetwork/CirclePack3DChart.js +161 -0
- package/dist/charts/threenetwork/City3DChart.js +128 -0
- package/dist/charts/threenetwork/ConeTreeChart.js +148 -0
- package/dist/charts/threenetwork/Dag3DChart.js +149 -0
- package/dist/charts/threenetwork/Force3DGraph.js +102 -0
- package/dist/charts/threenetwork/ForceLayout3D.js +103 -0
- package/dist/charts/threenetwork/Gantt3DChart.js +182 -0
- package/dist/charts/threenetwork/Graph3DBase.js +165 -0
- package/dist/charts/threenetwork/Hierarchy3DBase.js +42 -0
- package/dist/charts/threenetwork/Hive3DChart.js +150 -0
- package/dist/charts/threenetwork/Icicle3DChart.js +87 -0
- package/dist/charts/threenetwork/LabelSpacer3D.js +40 -0
- package/dist/charts/threenetwork/Loft.js +39 -0
- package/dist/charts/threenetwork/MatrixCube3D.js +145 -0
- package/dist/charts/threenetwork/MultilayerNetwork3D.js +139 -0
- package/dist/charts/threenetwork/NetworkMarks3D.js +130 -0
- package/dist/charts/threenetwork/Parallel3DCoordinates.js +155 -0
- package/dist/charts/threenetwork/Path3D.js +45 -0
- package/dist/charts/threenetwork/RingSegment3D.js +17 -0
- package/dist/charts/threenetwork/Sankey3DChart.js +182 -0
- package/dist/charts/threenetwork/Sphere3DGraph.js +125 -0
- package/dist/charts/threenetwork/Spiral3DTimeline.js +159 -0
- package/dist/charts/threenetwork/Sunburst3DChart.js +103 -0
- package/dist/charts/threenetwork/Temporal3DBase.js +22 -0
- package/dist/charts/threenetwork/Timeline3DChart.js +168 -0
- package/dist/charts/threenetwork/Tree3DChart.js +124 -0
- package/dist/charts/threenetwork/Treemap3DChart.js +98 -0
- package/dist/charts/threenetwork/enums.js +9 -0
- package/dist/charts/threenetwork/index.js +56 -0
- package/dist/charts/threesurfaces/ColorRamp.js +18 -0
- package/dist/charts/threesurfaces/ComplexSurface.js +156 -0
- package/dist/charts/threesurfaces/ContourSurface.js +149 -0
- package/dist/charts/threesurfaces/DensitySurface.js +162 -0
- package/dist/charts/threesurfaces/GridSurfaceBase.js +64 -0
- package/dist/charts/threesurfaces/HeightfieldBars.js +138 -0
- package/dist/charts/threesurfaces/ImplicitSurface.js +237 -0
- package/dist/charts/threesurfaces/IsoSurfaceMesher.js +75 -0
- package/dist/charts/threesurfaces/LayeredSurfaces.js +178 -0
- package/dist/charts/threesurfaces/MeshSurface.js +186 -0
- package/dist/charts/threesurfaces/ParametricForms.js +173 -0
- package/dist/charts/threesurfaces/ParametricSurface.js +178 -0
- package/dist/charts/threesurfaces/PhaseSurface.js +206 -0
- package/dist/charts/threesurfaces/PolarSurface.js +135 -0
- package/dist/charts/threesurfaces/RibbonSurface.js +167 -0
- package/dist/charts/threesurfaces/Ridgeline3DChart.js +148 -0
- package/dist/charts/threesurfaces/SaddleSurface.js +214 -0
- package/dist/charts/threesurfaces/ShortTimeTransform.js +53 -0
- package/dist/charts/threesurfaces/SliceSurface.js +101 -0
- package/dist/charts/threesurfaces/Spectrogram3DChart.js +92 -0
- package/dist/charts/threesurfaces/SurfaceBase.js +333 -0
- package/dist/charts/threesurfaces/SurfaceChart.js +75 -0
- package/dist/charts/threesurfaces/SurfaceField.js +158 -0
- package/dist/charts/threesurfaces/SurfaceGeometry.js +121 -0
- package/dist/charts/threesurfaces/SurfaceMesh.js +24 -0
- package/dist/charts/threesurfaces/SurfaceSpace.js +70 -0
- package/dist/charts/threesurfaces/TerrainChart.js +202 -0
- package/dist/charts/threesurfaces/TriangulatedSurface.js +252 -0
- package/dist/charts/threesurfaces/TubeBatch.js +72 -0
- package/dist/charts/threesurfaces/Waterfall3DSpectrum.js +109 -0
- package/dist/charts/threesurfaces/WireframeSurface.js +105 -0
- package/dist/charts/threesurfaces/index.js +49 -0
- package/dist/charts/threevolume/AtomicOrbitalChart.js +228 -0
- package/dist/charts/threevolume/Bubble3DCloud.js +126 -0
- package/dist/charts/threevolume/Cloud3DChart.js +100 -0
- package/dist/charts/threevolume/Contour3DStack.js +183 -0
- package/dist/charts/threevolume/CrystalLattice.js +282 -0
- package/dist/charts/threevolume/Density3DChart.js +212 -0
- package/dist/charts/threevolume/FlowParticles.js +119 -0
- package/dist/charts/threevolume/Helix3DChart.js +142 -0
- package/dist/charts/threevolume/IsosurfaceChart.js +78 -0
- package/dist/charts/threevolume/LorenzAttractor.js +303 -0
- package/dist/charts/threevolume/Molecule3DChart.js +162 -0
- package/dist/charts/threevolume/Orbital3DChart.js +188 -0
- package/dist/charts/threevolume/PointCloudChart.js +171 -0
- package/dist/charts/threevolume/PointRowsChart.js +137 -0
- package/dist/charts/threevolume/Slab3DChart.js +145 -0
- package/dist/charts/threevolume/Streamline3DChart.js +106 -0
- package/dist/charts/threevolume/TubeTrajectoryChart.js +156 -0
- package/dist/charts/threevolume/Vector3DField.js +109 -0
- package/dist/charts/threevolume/VectorField3D.js +117 -0
- package/dist/charts/threevolume/VectorField3DChart.js +27 -0
- package/dist/charts/threevolume/VolumeGrid.js +176 -0
- package/dist/charts/threevolume/VolumeGridChart.js +42 -0
- package/dist/charts/threevolume/VolumeIsoSurface.js +177 -0
- package/dist/charts/threevolume/VolumeRaycastChart.js +197 -0
- package/dist/charts/threevolume/VolumeScene.js +136 -0
- package/dist/charts/threevolume/VolumeSheet.js +39 -0
- package/dist/charts/threevolume/VolumeSlicesChart.js +134 -0
- package/dist/charts/threevolume/VolumeStrands.js +73 -0
- package/dist/charts/threevolume/VoxelChart.js +86 -0
- package/dist/charts/threevolume/index.js +52 -0
- package/dist/charts/threevolume/volumeEnums.js +337 -0
- package/dist/charts/timeline/BurnChart.js +138 -0
- package/dist/charts/timeline/BurndownChart.js +93 -0
- package/dist/charts/timeline/BurnupChart.js +103 -0
- package/dist/charts/timeline/CalendarHeatmap.js +332 -0
- package/dist/charts/timeline/CalendarSkylineChart.js +128 -0
- package/dist/charts/timeline/ChronologyChart.js +203 -0
- package/dist/charts/timeline/CriticalPathChart.js +139 -0
- package/dist/charts/timeline/CriticalPathMethod.js +89 -0
- package/dist/charts/timeline/CumulativeFlowChart.js +163 -0
- package/dist/charts/timeline/CycleTimeChart.js +176 -0
- package/dist/charts/timeline/EventDropChart.js +184 -0
- package/dist/charts/timeline/GanttChart.js +215 -0
- package/dist/charts/timeline/LifelineChart.js +173 -0
- package/dist/charts/timeline/MarimekkoTime.js +192 -0
- package/dist/charts/timeline/MilestoneChart.js +184 -0
- package/dist/charts/timeline/MilestoneTrendChart.js +148 -0
- package/dist/charts/timeline/PERTChart.js +236 -0
- package/dist/charts/timeline/PeriodicHeatmap.js +218 -0
- package/dist/charts/timeline/ResourceAllocationChart.js +281 -0
- package/dist/charts/timeline/RoadmapChart.js +198 -0
- package/dist/charts/timeline/ScheduleBlocksChart.js +119 -0
- package/dist/charts/timeline/SpiralTimeline.js +154 -0
- package/dist/charts/timeline/StreamTimeline.js +141 -0
- package/dist/charts/timeline/SwimlaneChart.js +212 -0
- package/dist/charts/timeline/TimeBandChart.js +23 -0
- package/dist/charts/timeline/TimeMarks.js +95 -0
- package/dist/charts/timeline/TimeRows.js +128 -0
- package/dist/charts/timeline/TimeSamples.js +96 -0
- package/dist/charts/timeline/TimelineChart.js +221 -0
- package/dist/charts/timeline/index.js +54 -0
- package/dist/chunk-KGSYGPLS.cjs +16 -0
- package/dist/chunk-W5GAAAZY.cjs +94790 -0
- package/dist/core/AnnotationLayer.js +236 -0
- package/dist/core/AnnotationPlacer.js +47 -0
- package/dist/core/AnnotationScale.js +64 -0
- package/dist/core/AxisWindow.js +85 -0
- package/dist/core/CartesianChart.js +142 -0
- package/dist/core/Chart.js +250 -0
- package/dist/core/Chart2D.js +249 -0
- package/dist/core/Chart3D.js +292 -0
- package/dist/core/ChartBrush.js +162 -0
- package/dist/core/ChartExportError.js +24 -0
- package/dist/core/ChartExporter.js +298 -0
- package/dist/core/ChartRegistry.js +53 -0
- package/dist/core/ChartViewport.js +401 -0
- package/dist/core/Context2D.js +164 -0
- package/dist/core/Context3D.js +76 -0
- package/dist/core/KeyboardNav.js +437 -0
- package/dist/core/LiveMotion.js +200 -0
- package/dist/core/LiveStream.js +179 -0
- package/dist/core/Palette.js +49 -0
- package/dist/core/RadialChart.js +14 -0
- package/dist/core/Scales.js +51 -0
- package/dist/core/SceneOverlay.js +63 -0
- package/dist/core/Theme.js +75 -0
- package/dist/core/Tooltip.js +73 -0
- package/dist/core/VariantSpace.js +30 -0
- package/dist/core/ZoomControls.js +28 -0
- package/dist/core/enums.js +107 -0
- package/dist/counties-10m-SUUOGEQ6.cjs +15 -0
- package/dist/countries-10m-W7BHA2Y5.cjs +15 -0
- package/dist/countries-110m-FX2H3PT5.cjs +16 -0
- package/dist/countries-50m-6EAF3KCW.cjs +15 -0
- package/dist/data/GeoAtlas.js +119 -0
- package/dist/data/SampleData.js +345 -0
- package/dist/index.cjs +6788 -0
- package/dist/index.d.cts +53672 -0
- package/dist/index.d.ts +53672 -0
- package/dist/index.js +927 -0
- package/dist/react/ChartView.js +77 -0
- package/dist/react/Graph.js +19 -0
- package/dist/react/GraphHandle.js +24 -0
- package/dist/react/chartComponent.js +18 -0
- package/dist/react/components.js +1930 -0
- package/dist/react/useLiveChart.js +34 -0
- package/dist/vendor/d3-cloud/src/layout.js +549 -0
- package/dist/vendor/d3-cloud/src/sprite.js +346 -0
- package/dist/vendor/us-atlas/counties-10m.json.js +53660 -0
- package/dist/vendor/us-atlas/states-10m.json.js +13858 -0
- package/dist/vendor/world-atlas/countries-10m.json.js +486537 -0
- package/dist/vendor/world-atlas/countries-110m.json.js +9360 -0
- package/dist/vendor/world-atlas/countries-50m.json.js +84531 -0
- package/package.json +96 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Malcolmston
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,383 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @mstone6969/graph
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A class-based chart library for React. Every chart is a TypeScript class with a matching React component: 2D charts draw to SVG with d3, and 3D charts draw to WebGL with three.js.
|
|
4
|
+
|
|
5
|
+
[Live gallery](https://malcolmston.github.io/graph/)
|
|
6
|
+
|
|
7
|
+
**642 chart classes (521 d3/SVG, 121 three.js/WebGL) expand to 42,928 chart types (35,606 2D, 7,322 3D).** A type is one class with one combination of its variant axes, for example `bar.horizontal.stacked`. Every type passes a test proving its geometry differs from its siblings, so this counts configurations, not 42,928 separately designed forms.
|
|
8
|
+
|
|
9
|
+
The count comes from `yarn vitest run src/catalog.test.ts`, which prints it. A class such as `BarChart` is one piece of code; its declared variant axes (orientation, stacking, padding) multiply into chart types, so hand-written classes are far fewer than types.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
yarn add @mstone6969/graph react react-dom
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Everything comes from one import, and bundlers keep only what you use: `Bar` adds about 550 KB before gzip, `BarChart` about 370 KB, and `GraphType` about 20 KB. `react` must be installed even if you only use the classes.
|
|
18
|
+
|
|
19
|
+
## Four ways to use it
|
|
20
|
+
|
|
21
|
+
**Component.** The usual choice. Every chart has one, and its props are typed for that chart. Sample data is drawn until you pass `data`.
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
import { Bar, Orientation, StackMode } from '@mstone6969/graph'
|
|
25
|
+
|
|
26
|
+
<Bar data={rows} orientation={Orientation.Horizontal} stack={StackMode.Stacked} />
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
A component is named after its class without `Chart`, `Plot`, `Map`, `Graph` or `Diagram`, so `BarChart` gives `Bar` and `ChoroplethMap` gives `Choropleth`. If that name is taken, by a class or a browser global, it ends in `Graph` instead: `Histogram` gives `HistogramGraph`, and each gallery page shows the name.
|
|
30
|
+
|
|
31
|
+
**GraphType.** For a chart chosen at runtime. `GraphType` has one member per class, and variants are props. `Graph` loads the whole catalog the first time it needs one, so prefer a component when you know the chart.
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
import { Graph, GraphType, Orientation } from '@mstone6969/graph'
|
|
35
|
+
|
|
36
|
+
<Graph type={GraphType.BarChart} data={rows} orientation={Orientation.Horizontal} />
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Class.** `<Graph>` creates the chart for you. Changing a prop updates the chart in place, so its marks animate to the new state.
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { BarChart, Graph, Orientation, StackMode } from '@mstone6969/graph'
|
|
43
|
+
|
|
44
|
+
<Graph of={BarChart} data={rows} orientation={Orientation.Horizontal} stack={StackMode.Stacked} />
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Instance.** You own the object and can call its methods. Use this outside React too, with `chart.mount(element)`.
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
import { BarChart, Graph, Orientation } from '@mstone6969/graph'
|
|
51
|
+
|
|
52
|
+
const chart = new BarChart({ data: rows, orientation: Orientation.Horizontal, title: 'Revenue by region' })
|
|
53
|
+
|
|
54
|
+
<Graph chart={chart} />
|
|
55
|
+
chart.update({ orientation: Orientation.Vertical })
|
|
56
|
+
chart.table() // { columns, rows }, for accessibility or export
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Option fields name your data columns, and their defaults match the sample data, so `<Bar data={sales} x="region" y="revenue" series="year" />` is all a custom dataset needs.
|
|
60
|
+
|
|
61
|
+
`<Graph>` keeps `type`, `of`, `chart`, `className`, `style`, `id` and `role` for itself. A few classes, such as `BoxPlot`, have a variant axis called `style`: reach those through an instance. Components keep only `className`, `style`, `id` and `role`, so a chart option called `type` works on them.
|
|
62
|
+
|
|
63
|
+
Every chart also takes the shared `ChartOptions`: `width`, `height`, `title`, `subtitle`, `theme`, `animate`, `legend`, `tooltip`, `margin`, `ariaLabel`, `onSelect` and `keyboard`. Without a fixed size it fills its parent and follows resizes.
|
|
64
|
+
|
|
65
|
+
Every x/y chart also takes `referenceLines`, `referenceBands` and `annotations`, positioned by data value through the chart's own scales, so categories, dates and log axes all work. `axis` names the axis the value sits on, so `AnnotationAxis.Y` (the default) draws a horizontal line. Values off the domain are skipped, bands are trimmed to it, and a label with no free spot in the plot is dropped. Bands sit behind the marks, so charts that fill the whole plot hide them.
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
<Graph of={LineChart} data={rows}
|
|
69
|
+
referenceLines={[{ value: 100, label: 'Target' }, { axis: AnnotationAxis.X, value: launch, label: 'Launch' }]}
|
|
70
|
+
referenceBands={[{ from: 20, to: 40, label: 'Safe range' }]}
|
|
71
|
+
annotations={[{ x: launch, y: 92, text: 'Price cut' }]} />
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Live data
|
|
75
|
+
|
|
76
|
+
`append` adds rows as they arrive instead of replacing the data. However fast rows come, the chart repaints at most once per animation frame.
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
const chart = new LineChart({ data: [] }).mount(el)
|
|
80
|
+
socket.onmessage = (event) => chart.append(JSON.parse(event.data), { window: 60_000 })
|
|
81
|
+
|
|
82
|
+
chart.append(rows, { keep: 500 }) // latest 500 rows, per series on charts with a series or group column
|
|
83
|
+
chart.append(rows, { window: 5000 }) // rows within 5s of the newest x; x units, so ms for dates
|
|
84
|
+
chart.pause() // freezes the picture; rows keep arriving and aging out
|
|
85
|
+
chart.resume() // catches up in one paint
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`window` and `keep` can be combined and stick for later calls. With neither, rows accumulate without limit. `window` reads the chart's `x` column; pass `{ x: 'column' }` if it has none. `update({ data })` replaces the live buffer. After `destroy()`, late rows are ignored, so a socket that outlives its chart is harmless. Series keep their colour and stack order as rows age out, so `chart.data` may list a series' oldest row early, and a series that returns after leaving the window comes last in the stack.
|
|
89
|
+
|
|
90
|
+
In React, `useLiveChart` gives you stable handlers:
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
import { Graph, useLiveChart } from '@mstone6969/graph'
|
|
94
|
+
|
|
95
|
+
const live = useLiveChart(() => new LineChart({ data: [] }), { window: 60_000 })
|
|
96
|
+
useEffect(() => socket.subscribe(live.append), [live.append])
|
|
97
|
+
return <Graph chart={live.chart} />
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Supported:** flat rows and long-form series rows (`{ date, series, value }`) on 2D charts with `DataShape.Table`, which is 387 catalog classes, row-fed massive charts included. Columnar massive data and anything else throws a clear error from `append` and `pause`: 3D charts, and hierarchy, graph, matrix, grid, volume, geo, function, text and genome data.
|
|
101
|
+
|
|
102
|
+
**Motion:** cartesian charts whose x and y are both continuous slide. Each paint draws final geometry, then the marks, ticks and grid decay smoothly from where they last appeared, so a spike rescales instead of jumping, and marks are clipped to the plot only while they move. Charts with a band or point axis, a zoom or brush, their own `draw`, or no axes morph each mark with its usual transition instead. Massive charts draw on a canvas, so they and their axes repaint in one step. `animate: false` and reduced motion paint straight through.
|
|
103
|
+
|
|
104
|
+
## Zoom, pan and brush
|
|
105
|
+
|
|
106
|
+
Every x/y chart takes `zoom` and `brush`. Both are off by default, and then nothing about the chart changes.
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
import { ZoomAxis, type BrushRange } from '@mstone6969/graph'
|
|
110
|
+
|
|
111
|
+
<Graph of={LineChart} data={rows} zoom /> // wheel, drag, double click and buttons along x
|
|
112
|
+
<Graph of={ScatterPlot} data={rows} zoom={ZoomAxis.XY} /> // both axes
|
|
113
|
+
<Graph of={LineChart} data={rows} brush onBrush={(range: BrushRange | null, settled: boolean) => settled && setRange(range)} />
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Zooming redraws through the real scales, so ticks are recomputed and marks stay sharp and at their drawn size. Nothing animates during a gesture. `chart.viewport` does the same from code: `zoomIn`, `zoomOut`, `reset`, `fit({ x: [a, b] })`, `brush({ x: [a, b] })`, `clearBrush`, and `domain` for what is on screen.
|
|
117
|
+
|
|
118
|
+
`onBrush` reports data, not pixels: `{ x: [low, high] }` in numbers or dates, or the list of bands covered on a band axis, and `null` when cleared. It fires while dragging with `settled` false, then once with `settled` true. A click on the plot or the × button clears it. The selection stays on its data while the chart zooms. With `zoom` on too, drag brushes, the wheel zooms and shift-drag pans. `brush: true` runs along the same axes as `zoom`. On touch, a finger brushes from anywhere on the plot; with `zoom` on too, a second finger does not pinch.
|
|
119
|
+
|
|
120
|
+
| Axis | Zoom | Brush reports |
|
|
121
|
+
| --- | --- | --- |
|
|
122
|
+
| Linear, power, sqrt, symlog, log | Domain narrows; log zooms in log space | `[number, number]` |
|
|
123
|
+
| Time | Domain narrows, ticks follow the span | `[Date, Date]` |
|
|
124
|
+
| Band, point | Bands widen; ticks outside the plot are dropped | Band names |
|
|
125
|
+
|
|
126
|
+
`zoom: true` follows the categories when y is the band axis, so a horizontal bar chart widens its bars instead of cutting their length. Asking for a value axis on a bar chart (`ZoomAxis.XY`) does cut bars at the plot edge, since their baseline leaves the view.
|
|
127
|
+
|
|
128
|
+
Not supported: a chart that cannot follow a scale says so with one `console.warn`, has `chart.viewport.supported === false`, and draws as if the option were off. That covers custom axes with no inverse or a fixed domain (`DetectionErrorCurve`'s probit and log scales; the y axes of `ManhattanPlot` and of a mel `SpectrogramChart`, which still zoom along x) and charts that lay out their own marks (`MarimekkoBar`). `TileMapDensity` has no interactive zoom: its `zoom` option is the tile level, a non-number there is refused, and `brush` still works. Charts with a second value scale (`DualAxisChart`, `ParetoBar`, `ParetoChart`, `TimeDomainDiffChart`, `FilterResponseChart`) and `ECGChart`'s fixed amplitude grid zoom along their first axis only, because the rest would otherwise drift from its marks. The y axis does not rescale to fit the visible x window. Hand-picked ticks stay while at least three are in view, then the scale ticks itself; a chart's own tick text gives way to d3's when zoom makes neighbouring labels equal. Layers in the margin, such as a second axis or end labels, stay out of the clip on that side.
|
|
129
|
+
|
|
130
|
+
## Export
|
|
131
|
+
|
|
132
|
+
Every chart saves itself as an image or as data. `chart.exportFormats` says what is available.
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
import { ExportFormat } from '@mstone6969/graph'
|
|
136
|
+
|
|
137
|
+
chart.toSVG() // string, 2D only
|
|
138
|
+
chart.toPNG({ scale: 3 }) // Promise<Blob>, scale defaults to 2
|
|
139
|
+
chart.toCSV() // string, from chart.table()
|
|
140
|
+
chart.download(ExportFormat.PNG, { filename: 'revenue.png' })
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
A `ref` on `<Graph>` gives the same methods, plus the live `chart`:
|
|
144
|
+
|
|
145
|
+
```tsx
|
|
146
|
+
const graph = useRef<GraphHandle>(null)
|
|
147
|
+
|
|
148
|
+
<Graph ref={graph} of={BarChart} data={rows} />
|
|
149
|
+
<button onClick={() => graph.current?.download(ExportFormat.SVG)}>Save</button>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Charts export finished: marks caught mid-animation are saved at their end state, rows appended but not yet painted are included, and the dimming of a hovered chart is left out. A smooth map zoom still in flight is saved where it has reached. `toStandaloneSVG`, `toPNG` and `download` wait for shapes a map loads on demand; `toSVG()` is synchronous and draws what is loaded now, so await one of those for a `geography` that may still be loading. A chart that is not mounted is drawn off-screen for the export, at its `width` and `height` or 640×400. Failures throw `ChartExportError`, whose `code` is an `ExportErrorCode`; an export never falls back to a blank file.
|
|
153
|
+
|
|
154
|
+
- **SVG** carries computed styles, the theme surface as a real rectangle, and the map's current zoom as plain transforms. On-screen zoom buttons are left out. It is unavailable for 3D charts, which render to WebGL: `toSVG()` throws and `exportFormats` omits it.
|
|
155
|
+
- **3D PNG** comes from the chart's renderer at the current camera, with any entry animation finished, and labels, title and legend drawn on top. A `scale` beyond the GPU's limit throws.
|
|
156
|
+
- **CSV** needs rows in `table()`, and throws otherwise. Dates are ISO 8601. Text that a spreadsheet would run as a formula is prefixed with `'`. `download` adds the byte order mark Excel needs; `toCSV()` does not.
|
|
157
|
+
- **Fonts.** `toSVG()` is synchronous and names the theme's font stack. `chart.toStandaloneSVG()`, `toPNG` and `download` also embed any `@font-face` the page declares for that font, when its stylesheet is readable. A font that cannot be fetched stays linked and the text draws in the fallback fonts.
|
|
158
|
+
- **Web map tiles.** `toSVG()` keeps tiles as links, so that file needs the network. `toStandaloneSVG()`, `toPNG` and `download` fetch every tile and embed it. The tile server must send `Access-Control-Allow-Origin`: if any tile cannot be read within 20 seconds, they reject with `ExportErrorCode.Tainted` and name the tile, rather than save a map with holes. Without `tiles`, a slippy map has nothing to fetch and always exports.
|
|
159
|
+
|
|
160
|
+
## Keyboard
|
|
161
|
+
|
|
162
|
+
2D charts take `keyboard` to reach their data marks without a mouse. It is off by default. On, the chart is one tab stop however many marks it has.
|
|
163
|
+
|
|
164
|
+
| Key | Action |
|
|
165
|
+
| --- | --- |
|
|
166
|
+
| Arrows | Move between marks. Left and Right stay in a series, Up and Down change series. Without series, or in a free layout such as a map or scatter, arrows go the way they point. |
|
|
167
|
+
| Shift and an arrow | Step through the series in data order, so every mark is reachable, including marks stacked on the same spot |
|
|
168
|
+
| Home, End, Page Up, Page Down | First, last, or a tenth of the way through the series |
|
|
169
|
+
| Enter, Space | Select the mark, as a click does, so `onSelect` fires and a drill map drills |
|
|
170
|
+
| Escape | Leave the marks. The next arrow picks up where you were |
|
|
171
|
+
|
|
172
|
+
The current mark gets a ring, the hover tooltip and an `aria-live` reading of that tooltip. `tooltip: false` removes the box and keeps the ring and the reading, because the reading is the only way a screen reader user gets the value. Marks reached are the ones given to `ctx.hover`, and on a zoomed chart only those inside the plot. A chart with no such marks, as with the signal and massive charts or empty data, stays `role="img"` with no tab stop. Exports leave all of this out. 3D charts ignore the option.
|
|
173
|
+
|
|
174
|
+
With marks to reach, the svg becomes `role="application"`. `img` hides its children and is not a keyboard target, and a screen reader in browse mode would otherwise use the arrow keys itself. DOM focus stays on the svg and the cursor moves over the marks, so a redraw cannot lose focus and the marks are never written to.
|
|
175
|
+
|
|
176
|
+
## Large data
|
|
177
|
+
|
|
178
|
+
SVG slows down past about 10,000 marks, so `src/charts/massive` draws to a canvas under a transparent SVG. Axes, legend, title, zoom, brush and annotations work as on any x/y chart. All three stayed interactive at 1,000,000 points in WebKit.
|
|
179
|
+
|
|
180
|
+
```tsx
|
|
181
|
+
import { Graph, MassiveDecimation, MassiveLineChart, MassiveScatterChart, ZoomAxis } from '@mstone6969/graph'
|
|
182
|
+
|
|
183
|
+
<Graph of={MassiveScatterChart} data={rows} zoom={ZoomAxis.XY} />
|
|
184
|
+
<Graph of={MassiveLineChart} data={{ x: times, y: values, time: true }} decimation={MassiveDecimation.Lttb} zoom />
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- `MassiveScatterChart` draws dots while they read and a density raster once they overplot; zooming in brings the dots back. `display` forces either.
|
|
188
|
+
- `MassiveLineChart` keeps every peak with `MassiveDecimation.MinMax`, the default. `Lttb` keeps the shape with fewer points. `None` draws every point, and is not responsive at 1M.
|
|
189
|
+
- `MassiveDensityChart` is always the raster, with `bin` and `densityScale`.
|
|
190
|
+
|
|
191
|
+
Columnar data (`{ x, y, series, names, time }` with typed arrays) is the cheapest input. Rows work too and can be appended; columnar data cannot. With no SVG marks, `keyboard` has nothing to reach.
|
|
192
|
+
|
|
193
|
+
## Specialist charts
|
|
194
|
+
|
|
195
|
+
Every chart here takes the shared options, and it has a component and a `GraphType` member.
|
|
196
|
+
|
|
197
|
+
**Business.** `TornadoChart` ranks drivers by how far each moves an output around the base case. `SparkBar` draws word-sized bars, one aligned row per series, including win-loss tiles.
|
|
198
|
+
|
|
199
|
+
```tsx
|
|
200
|
+
import { SparkBar, SparkBarForm, TornadoChart } from '@mstone6969/graph'
|
|
201
|
+
|
|
202
|
+
<Graph of={TornadoChart} data={[{ driver: 'Price', low: 80, high: 130, base: 100 }, { driver: 'Volume', low: 90, high: 115, base: 100 }]} />
|
|
203
|
+
<Graph of={SparkBar} data={rows} x="week" y="net" series="region" form={SparkBarForm.WinLoss} />
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Genomics.** `CircosPlot` draws a genome as a ring with data tracks and links, and `GenomeIdeogram` draws banded chromosomes with annotations. `GenomeSamples.cancerGenome(seed)` shows the data shape, and `bandFields`, `trackFields`, `linkFields` and `annotationFields` remap your columns.
|
|
207
|
+
|
|
208
|
+
```tsx
|
|
209
|
+
import { CircosPlot, GenomeIdeogram, GenomeIdeogramLayout, GenomeSamples } from '@mstone6969/graph'
|
|
210
|
+
|
|
211
|
+
const genome = GenomeSamples.cancerGenome(1) // { bands, tracks, links, annotations }
|
|
212
|
+
|
|
213
|
+
<Graph of={CircosPlot} data={genome} />
|
|
214
|
+
<Graph of={GenomeIdeogram} data={genome} layout={GenomeIdeogramLayout.Karyogram} />
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Earth science.** `Hydrograph` plots discharge under rainfall and separates baseflow, in m³/s, mm and km²: pass your catchment's `area`, because the event ends and phi-index depend on it. `TernaryContour` contours a surface over three-part compositions.
|
|
218
|
+
|
|
219
|
+
```tsx
|
|
220
|
+
import { BaseflowMethod, Hydrograph, TernaryContour, TernarySurface } from '@mstone6969/graph'
|
|
221
|
+
|
|
222
|
+
<Graph of={Hydrograph} data={rows} time="time" flow="flow" rain="rain" baseflow={BaseflowMethod.Eckhardt} area={60} />
|
|
223
|
+
<Graph of={TernaryContour} data={rows} a="sand" b="clay" c="silt" value="porosity" surface={TernarySurface.ScheffeQuadratic} />
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Demography.** `LexisDiagram` shades rates on an isometric calendar-by-age plane, so cohorts run at 45 degrees at any size. `Nomogram` is a parallel-scale alignment chart with a live isopleth: drag a handle, use the arrow keys, or call `chart.place(rail, value)` and read `chart.solution`. Pass a `NomogramLaw` for your own equation.
|
|
227
|
+
|
|
228
|
+
```tsx
|
|
229
|
+
import { LexisCellKind, LexisDiagram, Nomogram, NomogramLawKind, type NomogramSolution } from '@mstone6969/graph'
|
|
230
|
+
|
|
231
|
+
<Graph of={LexisDiagram} data={rows} cells={LexisCellKind.AgePeriod} />
|
|
232
|
+
<Graph of={Nomogram} data={rows} law={NomogramLawKind.Fagan} onSolve={(solution: NomogramSolution) => console.log(solution)} />
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Structure.** `TournamentBracket` derives its pairings from seeds and scores. `DependencyMatrix` and `UmlClassDiagram` take `GraphData`. `MareyChart` plots timetables, with stations spaced by real distance; `time` and `depart` take dates or `HH:MM` clock times, including GTFS times past `24:00`.
|
|
236
|
+
|
|
237
|
+
```tsx
|
|
238
|
+
import { DependencyMatrix, DsmOrder, MareyChart, TournamentBracket, TournamentElimination, UmlClassDiagram, UmlDirection } from '@mstone6969/graph'
|
|
239
|
+
|
|
240
|
+
<Graph of={TournamentBracket} data={results} elimination={TournamentElimination.Double} />
|
|
241
|
+
<Graph of={DependencyMatrix} data={graph} order={DsmOrder.Partition} />
|
|
242
|
+
<Graph of={UmlClassDiagram} data={graph} direction={UmlDirection.LeftRight} />
|
|
243
|
+
<Graph of={MareyChart} data={timetable} trip="train" encounters />
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Market profile.** `MarketProfileChart` prints a letter for each time bracket at every price traded, with the point of control, the value area and the initial balance. It joins the financial module and reads the usual `date`, `open`, `high`, `low` and `close` columns.
|
|
247
|
+
|
|
248
|
+
```tsx
|
|
249
|
+
import { MarketProfileChart, TpoBracket, TpoForm } from '@mstone6969/graph'
|
|
250
|
+
|
|
251
|
+
<Graph of={MarketProfileChart} data={bars} form={TpoForm.Blocks} bracket={TpoBracket.Hour} />
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Maps
|
|
255
|
+
|
|
256
|
+
Every 2D map takes `zoom` for drag, wheel, double click and on-screen buttons. `chart.viewport` does the same from code (`zoomIn`, `zoomOut`, `reset`, `fit`).
|
|
257
|
+
|
|
258
|
+
Region maps take `geography` to load bundled shapes on demand, so a page only downloads what it draws, then `rows` and `join` to attach your values. Shapes carry `fips`, `code` (states) and `name`.
|
|
259
|
+
|
|
260
|
+
```tsx
|
|
261
|
+
import { GeoLayer, UsCountyMap, ChoroplethMap } from '@mstone6969/graph'
|
|
262
|
+
|
|
263
|
+
<Graph of={UsCountyMap} rows={rows} /> // rows: [{ fips: '48201', value: 12 }]
|
|
264
|
+
<Graph of={ChoroplethMap} geography={GeoLayer.World50m} rows={rows} join="name" zoom />
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
`GeoLayer.World110m` swaps to 1:50m outlines by itself once you zoom in. `GeoAtlas` loads the same layers directly.
|
|
268
|
+
|
|
269
|
+
`DrillDownMap` opens a region into what it contains. With no setup it goes country, state, county; pass `children` for your own levels. One `rows` table can hold every level.
|
|
270
|
+
|
|
271
|
+
`SlippyPointMap` and `SlippyRegionMap` are Web Mercator maps. They draw their own land and make no network requests unless you pass `tiles`:
|
|
272
|
+
|
|
273
|
+
```tsx
|
|
274
|
+
import { OPEN_STREET_MAP, SlippyPointMap } from '@mstone6969/graph'
|
|
275
|
+
|
|
276
|
+
<Graph of={SlippyPointMap} data={places} tiles={OPEN_STREET_MAP} />
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
`TileSource` requires `attribution`, and the map prints it. The public OpenStreetMap server has a usage policy: use your own provider for production traffic.
|
|
280
|
+
|
|
281
|
+
## How it fits together
|
|
282
|
+
|
|
283
|
+
**Abstract classes** hold everything charts share. You only write the part that differs.
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
Chart options, lifecycle, sizing, theme, palette, tooltip
|
|
287
|
+
├── Chart2D SVG root, title, legend. You implement draw()
|
|
288
|
+
│ ├── CartesianChart axes and grid. You implement scales() and plotMarks()
|
|
289
|
+
│ └── RadialChart centred polar frame. You implement drawRadial()
|
|
290
|
+
└── Chart3D renderer, camera, lights, orbit, picking. You implement build()
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Concrete classes** extend one of those. When several classes in a module share logic, the module adds its own abstract class between them.
|
|
294
|
+
|
|
295
|
+
**Enums** name every option value, so `Orientation.Horizontal` is checked by the compiler and shows up in autocomplete. Shared ones (`ChartFamily`, `Dimension`, `DataShape`, `StackMode`, `CurveKind`, `ScaleKind`, `SymbolKind`, `LegendPosition`, `ThemeMode`) live in core. Modules export their own for chart-specific choices.
|
|
296
|
+
|
|
297
|
+
**Interfaces** are the contracts. `ChartOptions` is what every chart accepts, each class extends it with its own options, `ChartMeta` describes a class, `ChartClass` is any constructor with that `meta`, and `ChartType` is one class plus one combination of values. Data shapes (`Row`, `TreeNode`, `GraphData`, `MatrixData`, `GridData`, `VolumeData`) are interfaces too.
|
|
298
|
+
|
|
299
|
+
**The variant system** ties these together. Every class declares `static readonly meta`, and `meta.variants` maps option keys to values, with the first value as the default:
|
|
300
|
+
|
|
301
|
+
```ts
|
|
302
|
+
variants: {
|
|
303
|
+
orientation: [Orientation.Vertical, Orientation.Horizontal],
|
|
304
|
+
stack: [StackMode.None, StackMode.Stacked, StackMode.Normalized],
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
`VariantSpace` expands that into the cartesian product, and `meta.valid(values)` prunes combinations in which an axis would have no effect. Moved axes form the id, so the type above with both axes changed is `bar.horizontal.stacked`. `ChartRegistry` holds the result as `catalog`:
|
|
309
|
+
|
|
310
|
+
```ts
|
|
311
|
+
import { catalog, ChartFamily, Dimension, GraphType } from '@mstone6969/graph'
|
|
312
|
+
|
|
313
|
+
catalog.find({ text: 'stacked', family: ChartFamily.Comparison, dimension: Dimension.Two })
|
|
314
|
+
const [type] = catalog.find({ text: 'horizontal stacked', family: ChartFamily.Comparison })
|
|
315
|
+
const chart = catalog.create(type, { data: rows })
|
|
316
|
+
catalog.create(GraphType.BarChart, { data: rows })
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Adding a chart
|
|
320
|
+
|
|
321
|
+
1. Create one class in its own file under `src/charts/<module>/`, with its options interface beside it. Extend the abstract that fits.
|
|
322
|
+
2. Declare `static readonly meta`: a globally unique kebab-case `id`, `name`, one-sentence `description`, `family`, `dimension`, `shape`, a `sample` built from `SampleData`, and `variants`.
|
|
323
|
+
3. Draw through the context so animation, tooltips and themes work: `ctx.marks` for joins, `ctx.set` for animated attributes, `ctx.hover` on data marks, `ctx.palette` for colour.
|
|
324
|
+
4. Re-export it from the module's `index.ts` and list it in `<module>Catalog`.
|
|
325
|
+
|
|
326
|
+
```ts
|
|
327
|
+
import { scaleBand, scaleLinear, type ScaleBand, type ScaleLinear } from 'd3'
|
|
328
|
+
import { CartesianChart, ChartFamily, DataShape, Dimension, type CartesianOptions, type Context2D, type Row } from '../../core'
|
|
329
|
+
import { SampleData } from '../../data'
|
|
330
|
+
|
|
331
|
+
export interface DotRankOptions extends CartesianOptions<Row[]> { x?: string; y?: string; rule?: boolean }
|
|
332
|
+
interface DotRankAxes { x: ScaleBand<string>; y: ScaleLinear<number, number> }
|
|
333
|
+
|
|
334
|
+
/** Ranks categories with a dot, for when bars would be too heavy. */
|
|
335
|
+
export class DotRankChart extends CartesianChart<DotRankOptions, DotRankAxes> {
|
|
336
|
+
static readonly meta = {
|
|
337
|
+
id: 'dot-rank', name: 'Dot rank', family: ChartFamily.Comparison, dimension: Dimension.Two, shape: DataShape.Table,
|
|
338
|
+
description: 'Ranks categories by value with a single dot per category.',
|
|
339
|
+
sample: (seed: number) => SampleData.categories(seed, 7, 1),
|
|
340
|
+
variants: { rule: [false, true] },
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
protected override defaults() { return { x: 'category', y: 'value', rule: false } }
|
|
344
|
+
|
|
345
|
+
protected scales(ctx: Context2D): DotRankAxes {
|
|
346
|
+
const { data, x, y } = this.options
|
|
347
|
+
const top = Math.max(0, ...data.map((row) => +row[y!]!))
|
|
348
|
+
return {
|
|
349
|
+
x: scaleBand(data.map((row) => String(row[x!])), [0, ctx.plot.width]).padding(0.3),
|
|
350
|
+
y: scaleLinear([0, top], [ctx.plot.height, 0]).nice(),
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
protected plotMarks(ctx: Context2D, axes: DotRankAxes): void {
|
|
355
|
+
const { data, x, y, rule } = this.options
|
|
356
|
+
const center = (row: Row) => axes.x(String(row[x!]))! + axes.x.bandwidth() / 2
|
|
357
|
+
const rules = ctx.marks('rules', 'line', rule ? data : [], (row) => String(row[x!])).attr('stroke', ctx.theme.axis).attr('stroke-width', 2)
|
|
358
|
+
ctx.set(rules, { x1: center, x2: center, y1: axes.y(0), y2: (row) => axes.y(+row[y!]!) })
|
|
359
|
+
const dots = ctx.marks('dots', 'circle', data, (row) => String(row[x!])).attr('fill', ctx.palette.color('value'))
|
|
360
|
+
ctx.set(dots, { cx: center, cy: (row) => axes.y(+row[y!]!), r: 6 }, { r: 0 }, 20)
|
|
361
|
+
ctx.hover(dots, (row) => ({ title: String(row[x!]), rows: [[y!, +row[y!]!]] }))
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
The full rules are in [AUTHORING.md](AUTHORING.md). A chart is finished when `yarn vitest run src/charts/<module>` passes and `yarn sheet <module>` renders it correctly in light and dark.
|
|
367
|
+
|
|
368
|
+
## Gallery
|
|
369
|
+
|
|
370
|
+
`gallery/` is a browsable catalog of every type: search, filters, a live chart per type, a control for each variant axis, a copyable snippet and the data table.
|
|
371
|
+
|
|
372
|
+
```sh
|
|
373
|
+
yarn dev # local gallery
|
|
374
|
+
yarn build:gallery # writes dist-gallery/
|
|
375
|
+
yarn e2e # checks dist-gallery in WebKit, screenshots in .cache/gallery/
|
|
376
|
+
yarn e2e:animated # every 2D class settles on its static render
|
|
377
|
+
yarn e2e:maps # map input in WebKit, including tiles
|
|
378
|
+
yarn e2e:live # streaming soak and fidelity sweep
|
|
379
|
+
yarn e2e:keyboard # real key presses
|
|
380
|
+
yarn e2e:zoom # real wheel, drag and keyboard
|
|
381
|
+
yarn e2e:export # real exports in WebKit, files in .cache/export/
|
|
382
|
+
yarn e2e:massive # draw times at 100k and 1M points, report as JSON
|
|
383
|
+
```
|