@amcharts/amcharts5-mcp 1.4.0 → 1.6.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/content/SKILL.md +135 -7
- package/content/flow.md +7 -0
- package/content/hierarchy.md +21 -0
- package/content/map.md +107 -9
- package/content/pie.md +22 -0
- package/content/radar.md +1 -1
- package/content/timeline.md +3 -3
- package/content/venn.md +6 -0
- package/content/wordcloud.md +2 -0
- package/content/xy.md +32 -2
- package/extended/charts/map-chart/map-line-series.md +110 -1
- package/extended/charts/map-chart/map-point-series.md +110 -1
- package/extended/charts/map-chart/map-polygon-series.md +47 -0
- package/extended/charts/xy-chart/axes/category-axis.md +2 -0
- package/extended/concepts/animations.md +136 -2
- package/extended/concepts/data.md +2 -0
- package/extended/concepts/events.md +14 -0
- package/extended/concepts/serializing/chart-serializer.md +64 -24
- package/extended/concepts/serializing.md +17 -0
- package/extended/concepts/settings/template-fields.md +24 -0
- package/extended/examples/candlestick-ohlc/box-plot-chart.md +78 -73
- package/extended/examples/candlestick-ohlc/candlestick-chart.md +2 -5
- package/extended/examples/candlestick-ohlc/ohlc-chart.md +3 -6
- package/extended/examples/candlestick-ohlc/on-demand-data-loading.md +7 -7
- package/extended/examples/candlestick-ohlc/professional-candlesticks.md +3 -6
- package/extended/examples/candlestick-ohlc/stock-chart-candlesticks.md +1 -1
- package/extended/examples/column-bar/100-stacked-column-chart.md +3 -3
- package/extended/examples/column-bar/bar-and-line-chart-mix.md +3 -12
- package/extended/examples/column-bar/bar-chart-race.md +4 -11
- package/extended/examples/column-bar/bars-with-moving-bullets.md +1 -1
- package/extended/examples/column-bar/bullet-chart.md +1 -1
- package/extended/examples/column-bar/carbon-zero-progress.md +2 -3
- package/extended/examples/column-bar/clustered-bar-chart.md +3 -13
- package/extended/examples/column-bar/clustered-column-chart.md +2 -2
- package/extended/examples/column-bar/column-and-line-mix.md +1 -1
- package/extended/examples/column-bar/column-chart-images-top.md +4 -10
- package/extended/examples/column-bar/column-with-rotated-series.md +4 -11
- package/extended/examples/column-bar/columns-with-grainy-gradients.md +4 -5
- package/extended/examples/column-bar/columns-with-moving-bullets.md +1 -1
- package/extended/examples/column-bar/curved-columns.md +4 -10
- package/extended/examples/column-bar/divergent-stacked-bars.md +1 -10
- package/extended/examples/column-bar/drag-and-change-column-value.md +4 -11
- package/extended/examples/column-bar/drag-ordering-of-bars.md +1 -1
- package/extended/examples/column-bar/dumbbell-plot.md +1 -1
- package/extended/examples/column-bar/floating-bar-chart.md +2 -3
- package/extended/examples/column-bar/grouped-and-sorted-columns.md +4 -10
- package/extended/examples/column-bar/grouped-stacks.md +1 -1
- package/extended/examples/column-bar/heat-map-with-legend.md +8 -8
- package/extended/examples/column-bar/horizontal-dumbbell-plot.md +1 -1
- package/extended/examples/column-bar/images-as-categories.md +16 -18
- package/extended/examples/column-bar/layered-column-chart.md +1 -1
- package/extended/examples/column-bar/lollipop-chart.md +1 -1
- package/extended/examples/column-bar/pareto-diagram.md +4 -7
- package/extended/examples/column-bar/partitioned-bar-chart.md +1 -1
- package/extended/examples/column-bar/pictorial-column-chart.md +1 -1
- package/extended/examples/column-bar/real-time-data-sorting.md +4 -11
- package/extended/examples/column-bar/risk-heatmap.md +9 -9
- package/extended/examples/column-bar/simple-column-chart.md +3 -3
- package/extended/examples/column-bar/sorted-bar-chart.md +4 -12
- package/extended/examples/column-bar/stacked-bar-chart-with-negative-values.md +1 -1
- package/extended/examples/column-bar/stacked-bar-chart.md +1 -1
- package/extended/examples/column-bar/stacked-clustered-column-chart.md +1 -1
- package/extended/examples/column-bar/stacked-column-chart.md +1 -1
- package/extended/examples/column-bar/stacked-waterfall-chart.md +1 -1
- package/extended/examples/column-bar/step-count-chart.md +1 -1
- package/extended/examples/column-bar/variance-indicators.md +1 -1
- package/extended/examples/column-bar/waffle-chart.md +1 -1
- package/extended/examples/column-bar/waterfall-chart.md +1 -1
- package/extended/examples/dashboards/maps-and-charts-dashboard.md +1 -1
- package/extended/examples/dashboards/road-trip-dashboard-with-map.md +24 -23
- package/extended/examples/flow/animated-sankey-diagram.md +200 -202
- package/extended/examples/flow/chord-diagram-with-animated-bullets.md +4 -2
- package/extended/examples/flow/chord-diagram.md +6 -4
- package/extended/examples/flow/horizontal-arc-diagram.md +4 -2
- package/extended/examples/flow/non-ribbon-chord-diagram.md +6 -4
- package/extended/examples/flow/sankey-diagram.md +4 -2
- package/extended/examples/flow/toggleable-chord-diagram.md +4 -2
- package/extended/examples/flow/traceable-sankey-diagram.md +4 -2
- package/extended/examples/flow/vertical-arc-diagram.md +4 -2
- package/extended/examples/flow/vertical-sankey-diagram.md +11 -19
- package/extended/examples/funnel-pyramid/funnel-chart-with-rounded-corners.md +1 -1
- package/extended/examples/funnel-pyramid/funnel-chart.md +1 -1
- package/extended/examples/funnel-pyramid/funnel-with-gradient-fill.md +1 -1
- package/extended/examples/funnel-pyramid/horizontal-funnel.md +1 -1
- package/extended/examples/funnel-pyramid/horizontal-pictorial-chart.md +1 -1
- package/extended/examples/funnel-pyramid/pictorial-chart.md +1 -1
- package/extended/examples/funnel-pyramid/pictorial-fraction-chart.md +1 -1
- package/extended/examples/funnel-pyramid/pictorial-stacked-chart.md +1 -1
- package/extended/examples/funnel-pyramid/pyramid-chart.md +1 -1
- package/extended/examples/gantt/editable-multilevel-gantt-chart.md +1 -1
- package/extended/examples/gantt/gantt-chart-dates.md +1 -1
- package/extended/examples/gantt/gantt-chart-in-read-only-mode.md +1 -1
- package/extended/examples/gantt/gantt-chart-playground.md +4 -3
- package/extended/examples/gantt/gantt-chart.md +1 -1
- package/extended/examples/gantt/gantt-with-hundreds-of-items.md +1 -1
- package/extended/examples/gauges/angular-gauge-with-two-axes.md +1 -1
- package/extended/examples/gauges/angular-gauge.md +1 -1
- package/extended/examples/gauges/animated-gauge.md +1 -1
- package/extended/examples/gauges/clock-with-two-faces.md +1 -1
- package/extended/examples/gauges/clock.md +1 -1
- package/extended/examples/gauges/compass-chart.md +1 -1
- package/extended/examples/gauges/gauge-with-bands.md +1 -1
- package/extended/examples/gauges/gauge-with-gradient-fill.md +1 -1
- package/extended/examples/gauges/multi-part-gauge.md +1 -1
- package/extended/examples/gauges/solid-gauge.md +1 -1
- package/extended/examples/gauges/yes-and-no-gauge.md +1 -1
- package/extended/examples/hierarchy/collapsible-force-directed-tree.md +3 -3
- package/extended/examples/hierarchy/drill-down-sunburst-chart.md +4 -4
- package/extended/examples/hierarchy/drill-down-treemap.md +5 -5
- package/extended/examples/hierarchy/dynamic-data-updates-on-treemap.md +4 -4
- package/extended/examples/hierarchy/force-directed-adding-links.md +4 -4
- package/extended/examples/hierarchy/force-directed-network.md +4 -4
- package/extended/examples/hierarchy/force-directed-tree-with-animated-bullets.md +11 -10
- package/extended/examples/hierarchy/force-directed-tree.md +3 -3
- package/extended/examples/hierarchy/horizontal-partition-chart.md +3 -3
- package/extended/examples/hierarchy/multilevel-tree-map.md +11 -10
- package/extended/examples/hierarchy/packed-circle-chart.md +3 -3
- package/extended/examples/hierarchy/rectangular-voronoi-tree-map.md +4 -2
- package/extended/examples/hierarchy/simple-treemap.md +4 -4
- package/extended/examples/hierarchy/single-level-packed-circles.md +11 -10
- package/extended/examples/hierarchy/sunburst-chart.md +3 -3
- package/extended/examples/hierarchy/sunburst-flavor-wheel.md +18 -21
- package/extended/examples/hierarchy/tree-chart.md +11 -10
- package/extended/examples/hierarchy/vertical-partition-chart.md +3 -3
- package/extended/examples/hierarchy/voronoi-treemap.md +11 -10
- package/extended/examples/hierarchy/zoomable-force-directed-tree.md +11 -10
- package/extended/examples/line-area/100-stacked-area-chart.md +3 -4
- package/extended/examples/line-area/animated-bullet-at-the-end-of-the-series.md +1 -1
- package/extended/examples/line-area/area-with-time-based-data.md +2 -3
- package/extended/examples/line-area/chart-with-gaps-in-data.md +2 -3
- package/extended/examples/line-area/comparing-different-date-values-google-analytics-style.md +2 -3
- package/extended/examples/line-area/control-chart.md +1 -1
- package/extended/examples/line-area/data-grouping-50k-points.md +1 -2
- package/extended/examples/line-area/date-axis-with-labels-near-minor-grid-lines.md +1 -1
- package/extended/examples/line-area/date-based-data.md +1 -1
- package/extended/examples/line-area/date-based-line-chart.md +4 -4
- package/extended/examples/line-area/divergent-lines.md +2 -3
- package/extended/examples/line-area/draggable-range-with-close-button.md +1 -1
- package/extended/examples/line-area/drawing-chart-series-with-mouse-or-touch.md +1 -1
- package/extended/examples/line-area/duration-on-value-axis.md +8 -8
- package/extended/examples/line-area/error-chart.md +2 -3
- package/extended/examples/line-area/evenly-spaced-date-axis.md +1 -1
- package/extended/examples/line-area/highlighting-line-chart-series-on-legend-hover.md +1 -1
- package/extended/examples/line-area/line-chart-adding-data-every-second.md +1 -1
- package/extended/examples/line-area/line-chart-with-horizontal-target.md +1 -1
- package/extended/examples/line-area/line-chart-with-range-slider.md +1 -1
- package/extended/examples/line-area/line-chart-with-scroll-and-zoom.md +1 -1
- package/extended/examples/line-area/line-different-colors-ups-downs.md +1 -1
- package/extended/examples/line-area/line-graph.md +1 -1
- package/extended/examples/line-area/line-with-changing-color.md +1 -1
- package/extended/examples/line-area/line-with-custom-bullets.md +21 -18
- package/extended/examples/line-area/line-with-data-labels.md +1 -1
- package/extended/examples/line-area/live-data.md +1 -1
- package/extended/examples/line-area/live-order-book-depth-chart.md +9 -15
- package/extended/examples/line-area/logarithmic-scale.md +1 -1
- package/extended/examples/line-area/manipulate-chart-data-with-mouse.md +1 -1
- package/extended/examples/line-area/mixed-daily-and-intra-day-chart.md +1 -1
- package/extended/examples/line-area/multiple-date-axes.md +1 -1
- package/extended/examples/line-area/multiple-value-axes.md +1 -1
- package/extended/examples/line-area/no-gap-date-axis.md +1 -1
- package/extended/examples/line-area/process-control-chart.md +1 -1
- package/extended/examples/line-area/range-area-chart.md +1 -1
- package/extended/examples/line-area/range-chart-with-different-fill-colors.md +2 -2
- package/extended/examples/line-area/reversed-value-axis.md +2 -3
- package/extended/examples/line-area/selecting-and-marking-multiple-ranges.md +1 -2
- package/extended/examples/line-area/show-percentage-change.md +1 -1
- package/extended/examples/line-area/smoothed-line-chart.md +1 -1
- package/extended/examples/line-area/smoothed-stacked-area.md +2 -3
- package/extended/examples/line-area/spline-graph.md +1 -1
- package/extended/examples/line-area/stacked-area.md +2 -3
- package/extended/examples/line-area/step-line-chart.md +1 -1
- package/extended/examples/line-area/step-line-without-risers.md +1 -1
- package/extended/examples/line-area/stream-chart.md +2 -3
- package/extended/examples/line-area/trend-lines.md +1 -1
- package/extended/examples/line-area/vertical-line-chart.md +1 -1
- package/extended/examples/line-area/zoomable-value-axis.md +6 -6
- package/extended/examples/maps/animations-along-lines.md +34 -28
- package/extended/examples/maps/approximate-working-hours-map.md +9 -1
- package/extended/examples/maps/capitals-map.md +363 -911
- package/extended/examples/maps/changing-map-projection.md +7 -6
- package/extended/examples/maps/day-and-night-world-map.md +172 -532
- package/extended/examples/maps/drill-down-congressional-map.md +2 -2
- package/extended/examples/maps/drill-down-map.md +4 -4
- package/extended/examples/maps/drill-down-to-countries.md +6 -6
- package/extended/examples/maps/flight-routes-map.md +9 -1
- package/extended/examples/maps/grouped-countries-map.md +2 -3
- package/extended/examples/maps/location-sensitive-map.md +2 -1
- package/extended/examples/maps/map-bubbles.md +11 -3
- package/extended/examples/maps/map-dynamic-pie-charts.md +1 -1
- package/extended/examples/maps/map-image-drill-down.md +14 -15
- package/extended/examples/maps/map-sankey-series.md +22 -0
- package/extended/examples/maps/map-timeline.md +1 -1
- package/extended/examples/maps/map-using-d3-projections.md +1 -1
- package/extended/examples/maps/map-with-animated-bubbles.md +4 -2
- package/extended/examples/maps/map-with-animated-lines.md +38 -26
- package/extended/examples/maps/map-with-curved-lines.md +35 -25
- package/extended/examples/maps/map-with-patterns.md +9 -4
- package/extended/examples/maps/map-with-pulsating-bullets.md +9 -13
- package/extended/examples/maps/map-with-sized-pin-bullets.md +1 -1
- package/extended/examples/maps/multi-series-map.md +5 -4
- package/extended/examples/maps/pacific-centered-map.md +2 -1
- package/extended/examples/maps/rotate-globe-to-a-selected-country.md +200 -29
- package/extended/examples/maps/rotating-globe-with-circles.md +19 -2
- package/extended/examples/maps/rotating-globe.md +77 -20
- package/extended/examples/maps/selecting-multiple-areas-map.md +1 -1
- package/extended/examples/maps/solar-eclipse-map.md +12 -7
- package/extended/examples/maps/trumps-reciprocal-tariffs-map.md +1 -1
- package/extended/examples/maps/us-congressional-districts.md +19 -10
- package/extended/examples/maps/us-heat-map.md +1 -1
- package/extended/examples/maps/weather-map.md +1 -1
- package/extended/examples/maps/world-map-with-clustered-points.md +2 -1
- package/extended/examples/maps/world-time-zone-map.md +2 -1
- package/extended/examples/maps/zooming-to-countries-map.md +91 -15
- package/extended/examples/miscellaneous/annotating-charts.md +3 -3
- package/extended/examples/miscellaneous/changing-data-word-cloud.md +4 -2
- package/extended/examples/miscellaneous/combined-bullet-column-line-chart.md +1 -1
- package/extended/examples/miscellaneous/complex-venn-diagram.md +9 -22
- package/extended/examples/miscellaneous/exporting-chart-to-image.md +1 -1
- package/extended/examples/miscellaneous/forest-plot.md +5 -5
- package/extended/examples/miscellaneous/historical-population-pyramid.md +2 -4
- package/extended/examples/miscellaneous/honeycomb-tile-map.md +1 -1
- package/extended/examples/miscellaneous/horizontally-stacked-axes.md +1 -1
- package/extended/examples/miscellaneous/hybrid-drill-down-pie-bar-chart.md +4 -4
- package/extended/examples/miscellaneous/infographic.md +1 -1
- package/extended/examples/miscellaneous/mekko.md +1 -1
- package/extended/examples/miscellaneous/micro-charts-sparklines.md +1 -1
- package/extended/examples/miscellaneous/pictogram.md +3 -5
- package/extended/examples/miscellaneous/population-pyramid.md +1 -1
- package/extended/examples/miscellaneous/progress-chart.md +2 -2
- package/extended/examples/miscellaneous/range-bullet-chart.md +1 -1
- package/extended/examples/miscellaneous/sentence-cloud.md +10 -19
- package/extended/examples/miscellaneous/spectrum-chart.md +4 -4
- package/extended/examples/miscellaneous/strip-plot.md +1 -1
- package/extended/examples/miscellaneous/tag-cloud.md +5 -4
- package/extended/examples/miscellaneous/tile-map.md +1 -1
- package/extended/examples/miscellaneous/venn-diagram-with-patterns.md +8 -8
- package/extended/examples/miscellaneous/venn-diagram.md +8 -8
- package/extended/examples/miscellaneous/vertically-stacked-axes-chart.md +1 -1
- package/extended/examples/miscellaneous/violin-chart.md +1 -1
- package/extended/examples/miscellaneous/word-cloud.md +11 -10
- package/extended/examples/pie-donut/animated-time-line-pie-chart.md +1 -1
- package/extended/examples/pie-donut/donut-chart.md +1 -1
- package/extended/examples/pie-donut/donut-with-radial-gradient.md +2 -2
- package/extended/examples/pie-donut/dragging-pie-slices.md +1 -1
- package/extended/examples/pie-donut/grained-gradient-pie.md +1 -1
- package/extended/examples/pie-donut/nested-donut-chart.md +4 -4
- package/extended/examples/pie-donut/pie-chart-broken-slices.md +1 -1
- package/extended/examples/pie-donut/pie-chart-with-legend.md +1 -1
- package/extended/examples/pie-donut/pie-chart.md +3 -3
- package/extended/examples/pie-donut/pie-of-a-pie.md +1 -1
- package/extended/examples/pie-donut/semi-circle-pie-chart.md +1 -1
- package/extended/examples/pie-donut/simple-pie-chart.md +4 -3
- package/extended/examples/pie-donut/two-level-pie-chart.md +1 -1
- package/extended/examples/pie-donut/two-pie-charts-with-single-legend.md +1 -1
- package/extended/examples/pie-donut/variable-radius-nested-donut-chart.md +2 -3
- package/extended/examples/pie-donut/variable-radius-nested-pie.md +1 -1
- package/extended/examples/pie-donut/variable-radius-pie-chart.md +1 -1
- package/extended/examples/radar-polar/flower-chart.md +1 -1
- package/extended/examples/radar-polar/live-sorting-of-radar-columns.md +4 -11
- package/extended/examples/radar-polar/polar-area-chart.md +1 -1
- package/extended/examples/radar-polar/polar-chart.md +1 -1
- package/extended/examples/radar-polar/polar-scatter.md +1 -1
- package/extended/examples/radar-polar/radar-chart-visualizing-yearly-activities.md +3 -4
- package/extended/examples/radar-polar/radar-chart.md +1 -1
- package/extended/examples/radar-polar/radar-heat-map.md +1 -1
- package/extended/examples/radar-polar/radar-timeline.md +1 -1
- package/extended/examples/radar-polar/radar-with-date-axis.md +1 -1
- package/extended/examples/radar-polar/radial-bar-chart.md +1 -1
- package/extended/examples/radar-polar/radial-histogram.md +4 -12
- package/extended/examples/radar-polar/radial-line-graph.md +1 -1
- package/extended/examples/radar-polar/stacked-area-radar.md +2 -3
- package/extended/examples/radar-polar/variable-radius-radar.md +1 -1
- package/extended/examples/radar-polar/wheel-of-life.md +1 -1
- package/extended/examples/radar-polar/zoomable-radar.md +1 -1
- package/extended/examples/stock/changing-data-granularity.md +1 -1
- package/extended/examples/stock/live-stock-data.md +1 -1
- package/extended/examples/stock/separate-volume-panel.md +1 -1
- package/extended/examples/stock/stock-chart-comparing-prices.md +1 -1
- package/extended/examples/stock/stock-chart-with-bollinger-bands-indicator.md +1 -1
- package/extended/examples/stock/stock-chart-with-relative-strength-index.md +1 -1
- package/extended/examples/stock/stock-chart-with-volume-profile.md +1 -1
- package/extended/examples/stock/stock-chart.md +1 -1
- package/extended/examples/stock/stock-data-grouping.md +1 -1
- package/extended/examples/stock/stock-intraday-data.md +1 -1
- package/extended/examples/timeline/horizontal-serpentine-timeline.md +4 -6
- package/extended/examples/timeline/infinity-timeline.md +3 -3
- package/extended/examples/timeline/linear-process-diagram.md +1 -1
- package/extended/examples/timeline/serpentine-timeline-chart.md +4 -6
- package/extended/examples/timeline/spiral-timeline.md +3 -6
- package/extended/examples/timeline/stadium-track-chart.md +1 -1
- package/extended/examples/xy-bubble/animated-xy-bubble-timeline-chart.md +1 -1
- package/extended/examples/xy-bubble/beeswarm.md +1 -1
- package/extended/examples/xy-bubble/bubble-based-heat-map.md +4 -4
- package/extended/examples/xy-bubble/bubble-chart-with-pie-bullets.md +1 -1
- package/extended/examples/xy-bubble/bubble-chart.md +1 -1
- package/extended/examples/xy-bubble/irregular-interval-xy.md +1 -1
- package/extended/examples/xy-bubble/motion-chart.md +2 -5
- package/extended/examples/xy-bubble/scatter-chart.md +1 -1
- package/extended/examples/xy-bubble/scatter-plot-with-tens-of-thousands-points.md +7 -5
- package/extended/examples/xy-bubble/xy-chart-date-based-axis.md +1 -1
- package/extended/examples/xy-bubble/xy-chart-fills-axis.md +1 -1
- package/extended/examples/xy-bubble/xy-chart-value-based-line-graphs.md +1 -1
- package/extended/examples/xy-bubble/xy-error-chart.md +2 -5
- package/extended/examples/xy-bubble/zoomable-bubble-chart.md +2 -5
- package/extended/reference/animationoptions.md +1 -0
- package/extended/reference/chartserializer.md +10 -1
- package/extended/reference/entity.md +5 -2
- package/extended/reference/ibasecolumnseriesdataitem.md +1 -0
- package/extended/reference/ibasecolumnseriessettings.md +2 -0
- package/extended/reference/ichartserializersettings.md +13 -16
- package/extended/reference/ideclaredanimation.md +57 -0
- package/extended/reference/ieasinginfo.md +29 -0
- package/extended/reference/ientitysettings.md +5 -2
- package/extended/reference/imapchartsettings.md +2 -0
- package/extended/reference/imaplineseriesdataitem.md +1 -0
- package/extended/reference/imaplineseriessettings.md +2 -0
- package/extended/reference/imappointseriesdataitem.md +4 -2
- package/extended/reference/imappointseriessettings.md +7 -3
- package/extended/reference/iparsesettings.md +9 -3
- package/extended/reference/irootsettings.md +4 -0
- package/extended/reference/iscrollbarsettings.md +1 -0
- package/extended/reference/iserialchartcontainersettings.md +16 -0
- package/extended/reference/iserializersettings.md +2 -1
- package/extended/reference/iseriesdataitem.md +1 -0
- package/extended/reference/iseriessettings.md +2 -0
- package/extended/reference/mapchart.md +4 -0
- package/extended/reference/mappointseries.md +7 -3
- package/extended/reference/serialchart.md +1 -1
- package/extended/reference/serialchartcontainer.md +34 -0
- package/extended/reference/serializer.md +2 -1
- package/extended/reference/series.md +2 -0
- package/package.json +5 -2
- package/src/tools.js +73 -21
|
@@ -60,27 +60,19 @@ Comment
|
|
|
60
60
|
|
|
61
61
|
Remove the empty objects from the resulting JSON.
|
|
62
62
|
|
|
63
|
-
`includeProjection`
|
|
64
|
-
|
|
65
|
-
`boolean`
|
|
66
|
-
|
|
67
|
-
`false`
|
|
68
|
-
|
|
69
|
-
Include `projection` setting for `MapChart`.
|
|
70
|
-
|
|
71
63
|
`includeStates`
|
|
72
64
|
|
|
73
65
|
`boolean`
|
|
74
66
|
|
|
75
|
-
`
|
|
67
|
+
`true`
|
|
76
68
|
|
|
77
69
|
Include element and template states.
|
|
78
70
|
|
|
79
71
|
`includeAdapters`
|
|
80
72
|
|
|
81
|
-
boolean
|
|
73
|
+
`boolean`
|
|
82
74
|
|
|
83
|
-
`
|
|
75
|
+
`true`
|
|
84
76
|
|
|
85
77
|
Include adapters in the output.
|
|
86
78
|
|
|
@@ -92,17 +84,55 @@ Include adapters in the output.
|
|
|
92
84
|
|
|
93
85
|
Export functions as references or stringify them.
|
|
94
86
|
|
|
95
|
-
|
|
87
|
+
`includeRoot`
|
|
88
|
+
|
|
89
|
+
`boolean`
|
|
90
|
+
|
|
91
|
+
`false`
|
|
92
|
+
|
|
93
|
+
Add a top-level `root` section with the `Root` object's settings and properties (`interfaceColors`, formatters, `utc`, `fps`, `tabindex`) to the output. `JsonParser` applies a `root` section before parsing the chart. *(5.20.2)*
|
|
94
|
+
|
|
95
|
+
`runningAnimations`
|
|
96
|
+
|
|
97
|
+
`boolean`
|
|
98
|
+
|
|
99
|
+
`true`
|
|
100
|
+
|
|
101
|
+
Write an animation started in code that loops forever (`loops: Infinity`) into the element's `animations` setting, so the parsed chart plays it too. See "Animations" below. *(5.20.8)*
|
|
102
|
+
|
|
103
|
+
**What gets serialized (5.20.3+):** only **user-set** settings — theme and library defaults are left out, so the output is much smaller than in earlier versions and a value you never set will not appear. Chart-set values and data a chart builds for itself (a flow's nodes, a word cloud's words) are not written. Objects pointing at one another are written as references (e.g. `"@series.get('fill')"`) instead of copies, and big values (a map's `geoJSON`, a `Root`'s locale) are written as the name of the pack they came from and rebuilt on parse. Since 5.20.7 a map series' data rows no longer carry the properties the map copies onto them from its geodata (`name`, and on some maps `CNTRY`, `TYPE`) — only values that differ from the feature's are written, and a row left with nothing but its id is dropped.
|
|
104
|
+
|
|
105
|
+
Both states and adapters are included by default. The below instructs serializer to leave them out of the output:
|
|
96
106
|
|
|
97
107
|
const serializer = am5plugins\_json.ChartSerializer.new(root, {
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
includeStates: false,
|
|
109
|
+
includeAdapters: false
|
|
100
110
|
});
|
|
101
111
|
|
|
102
112
|
var serializer = am5plugins\_json.ChartSerializer.new(root, {
|
|
103
|
-
|
|
104
|
-
|
|
113
|
+
includeStates: false,
|
|
114
|
+
includeAdapters: false
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
### Animations (5.20.8)
|
|
118
|
+
|
|
119
|
+
An element's `animations` setting (see "[Animations: Declarative animations](https://www.amcharts.com/docs/v5/concepts/animations/)") is written as configured. A setting one of its entries animates is written with the value it was configured with, never one caught mid-animation.
|
|
120
|
+
|
|
121
|
+
With `runningAnimations: true` (the default) *(5.20.8)*, an animation started in code with `animate()` that loops forever (`loops: Infinity`) and uses a named easing is written as an `animations` entry (`{ key, from, to, duration, loops: 0 }`, plus `easing`, `ease` and `yoyo` where they apply), and the setting it animates is left out of the output. A globe that keeps turning or a bullet that keeps pulsing thus plays on in the parsed chart.
|
|
122
|
+
|
|
123
|
+
Never written:
|
|
124
|
+
|
|
125
|
+
- Animations that end: `appear()`, state transitions, zooming, any `animate()` with a finite `loops`.
|
|
126
|
+
- Animations whose easing is a function of your own, a wrapped `am5.ease.pow`, or an easing that cannot be named (e.g. `am5.ease.out(am5.ease.yoyo(...))`). `am5.ease.easingInfo()` tells whether an easing has a name.
|
|
127
|
+
- As of 5.20.8, a loop started in code on a **data item** (e.g. `dataItem.animate({ key: "positionOnLine", loops: Infinity })`). Declare it as an `animations` entry with `target: "dataItem"` on the bullet's sprite instead.
|
|
128
|
+
|
|
129
|
+
To turn this off:
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
var serializer = am5plugins_json.ChartSerializer.new(root, {
|
|
133
|
+
runningAnimations: false
|
|
105
134
|
});
|
|
135
|
+
```
|
|
106
136
|
|
|
107
137
|
### Including related elements
|
|
108
138
|
|
|
@@ -110,23 +140,29 @@ var serializer = am5plugins\_json.ChartSerializer.new(root, {
|
|
|
110
140
|
|
|
111
141
|
The serializer will detect `Legend` or `HeatLegend` and include it in the output if its a child of one of the chart's built-in containers, like `rightAxesContainer`, its series or the chart itself.
|
|
112
142
|
|
|
143
|
+
Since 5.20.7 a legend placed inside an axis header (`axisHeader`) round-trips too. Before, parsing such a config failed with "Could not find ref", because the legend names a series defined further down the config (see "[Grouping referenced objects](https://www.amcharts.com/docs/v5/concepts/serializing/#Grouping_referenced_objects)").
|
|
144
|
+
|
|
113
145
|
#### Custom elements
|
|
114
146
|
|
|
115
147
|
Custom elements, like labels and the like, will not be included in the output unless the have a `"serialize"` in their `themeTags`:
|
|
116
148
|
|
|
117
149
|
pieSeries.children.push(am5.Label.new(root, {
|
|
118
|
-
text: "Hello,
|
|
150
|
+
text: "Hello",
|
|
119
151
|
x: am5.p50,
|
|
120
152
|
y: am5.p50,
|
|
121
153
|
themeTags: \["serialize"\]
|
|
122
|
-
});
|
|
154
|
+
}));
|
|
123
155
|
|
|
124
156
|
pieSeries.children.push(am5.Label.new(root, {
|
|
125
|
-
text: "Hello,
|
|
157
|
+
text: "Hello",
|
|
126
158
|
x: am5.p50,
|
|
127
159
|
y: am5.p50,
|
|
128
160
|
themeTags: \["serialize"\]
|
|
129
|
-
});
|
|
161
|
+
}));
|
|
162
|
+
|
|
163
|
+
#### Theme tags (5.20.6)
|
|
164
|
+
|
|
165
|
+
Since 5.20.6 the `themeTags` you give an element are written to the output too, so anything styled through them (e.g. a `Button` with `themeTags: ["switch"]`) keeps that styling when the config is parsed again. Only tags passed to the element's `.new()` call are written — tags added later via `set("themeTags", …)`, and tags the library adds itself, are left out. On parse, the tags are added to the ones an existing element already has rather than replacing them.
|
|
130
166
|
|
|
131
167
|
## Supported chart types
|
|
132
168
|
|
|
@@ -137,24 +173,28 @@ pieSeries.children.push(am5.Label.new(root, {
|
|
|
137
173
|
- Venn
|
|
138
174
|
- WordCloud
|
|
139
175
|
- MapChart
|
|
176
|
+
- Gantt *(5.20.3)*
|
|
140
177
|
|
|
141
178
|
## Limitations
|
|
142
179
|
|
|
143
180
|
### Limited functionality
|
|
144
181
|
|
|
145
|
-
- Bullets (series or axis): No support for bullets that reference outside objects or context-based bullets (where bullet code depends on context to determine its appearance)
|
|
182
|
+
- Bullets (series or axis): No support for bullets that reference outside objects or context-based bullets (where bullet code depends on context to determine its appearance). Declare bullet factories as `function(root, series, dataItem)` — a factory that closes over an outer `root` dangles on re-bind.
|
|
146
183
|
- Bullets or adapters that rely on global variables. Parser runs in a different scope, thus global variables might not be available.
|
|
184
|
+
- **Adapters do not round-trip.** With `includeAdapters: true` (the default) each adapter is written as `{ key, callback: "function (…) {…}" }` (a string) — `JsonParser` does not turn it back into a function. Before 5.20.4 the string was registered as a callback and crashed the chart (`i[s] is not a function` in `Entity.fold`); since 5.20.4 such adapters are skipped on parse. Prefer declarative equivalents (`colorByDataItem` on column series, per-item `fill` + `templateField`, `heatRules`).
|
|
185
|
+
- **Serialize the chart's top-level container child, not a bare series.** A series whose settings point back at itself (e.g. `selectedDataItem`, a `DataItem` whose `component` is the series) forms a cycle; serialized on its own it overflows `removeEmptyObjects` pruning or makes `JSON.stringify` throw "Converting circular structure". As a child of the serialized container it becomes a `#series-0` reference and the cycle disappears.
|
|
186
|
+
- A bullet heat rule's throwaway sprite (created while the serializer introspects the bullet factory) has no `dataItem`; as of 5.20.8 the heat-rule loop then throws and, on a `LineSeries`, the stroke disappears. Have the factory call `sprite._setDataItem(dataItem)` or serialize before adding the rule.
|
|
147
187
|
|
|
148
188
|
### Unsupported features
|
|
149
189
|
|
|
150
|
-
- Maps:
|
|
190
|
+
- Maps: projections that are not registered by name. A projection set via `projectionName`, one of the bundled factories (`am5map.geoMercator()`, `am5map.geoOrthographic()`, etc.), or the factory returned by `am5map.registerProjection()` is written as `projectionName` and round-trips.
|
|
151
191
|
- Bullets: Full charts in bullets
|
|
152
|
-
- Axes: Legend inside axis header
|
|
153
192
|
- Templates: `setup` function
|
|
154
193
|
- Custom draw functions
|
|
155
194
|
- Events
|
|
195
|
+
- `ZoomableContainer`: its `contents.children` and any `ZoomTools` are not serialized — a serialized `ZoomableContainer` parses back empty. Use `SerialChartContainer` (5.20.2), which builds its own zoomable wrapper, or re-wrap in code after parsing.
|
|
196
|
+
- Venn: `hoverGraphics` and slice-template `states` are not serialized — re-apply a custom hover in code after parsing.
|
|
156
197
|
|
|
157
198
|
### Unsupported chart types
|
|
158
199
|
|
|
159
|
-
- Gantt
|
|
160
200
|
- StockChart
|
|
@@ -22,6 +22,7 @@ Supported features:
|
|
|
22
22
|
- Properties
|
|
23
23
|
- Settings
|
|
24
24
|
- Adapters
|
|
25
|
+
- Declared animations — the `animations` setting *(5.20.8)*, see "[Animations](https://www.amcharts.com/docs/v5/concepts/animations/)". In a JSON config, colors and percents in an entry's `from`/`to` use the object form (`{ "type": "Color", "value": "#f00" }`, `{ "type": "Percent", "value": 50 }`).
|
|
25
26
|
|
|
26
27
|
Unsupported features:
|
|
27
28
|
|
|
@@ -343,6 +344,8 @@ The items in the array will be processed one by one, so that references from the
|
|
|
343
344
|
|
|
344
345
|
This way, a value can reference to any object from previous items.
|
|
345
346
|
|
|
347
|
+
Since 5.20.7, a setting or property value that names a ref defined further down the config (later in the same `refs` object, or in a later group) no longer fails with "Could not find ref" — it is resolved after the rest of the config has been parsed. This is what makes e.g. a legend inside an axis header that lists a series defined later work. Groups are still the way to make sure an object is fully built before something uses it, and they are still required for [axis range](#Axis_ranges) definitions: a range's `axis` and `series` are looked up immediately, so the referenced axis and series need to come first, in an earlier group.
|
|
348
|
+
|
|
346
349
|
{
|
|
347
350
|
type: "XYChart",
|
|
348
351
|
refs: \[{
|
|
@@ -659,6 +662,8 @@ Since adapters are functions, they can't technically be part of a serialized JSO
|
|
|
659
662
|
}\]
|
|
660
663
|
}
|
|
661
664
|
|
|
665
|
+
**Adapters and JSON round-trips:** a function reference works only when the config is a JavaScript object in the same scope. Once the config has been through `JSON.stringify` (or `ChartSerializer` with `functionsAs: "string"`), the callback is a string — `JsonParser` does not evaluate it, and since 5.20.4 such an adapter is skipped (before that it was registered as-is and crashed the chart with `i[s] is not a function`). Effects that must survive a round-trip need a declarative equivalent: `colorByDataItem` on column series (5.20.4), a per-item `fill` field with `templateField`, or `heatRules`.
|
|
666
|
+
|
|
662
667
|
## Parsing
|
|
663
668
|
|
|
664
669
|
To parse serialized configs, we'll need:
|
|
@@ -679,6 +684,18 @@ parser.parse({
|
|
|
679
684
|
// ...
|
|
680
685
|
});
|
|
681
686
|
|
|
687
|
+
### Parse options (`IParseSettings`)
|
|
688
|
+
|
|
689
|
+
The second argument of `parse()` is an options object — these are **not** settings of the parser itself:
|
|
690
|
+
|
|
691
|
+
- `parent` — a `Container` to place the parsed chart into.
|
|
692
|
+
- `updateTargets` *(5.20.3)* — `"strict"` (default): when the source object has a `type`, a new object of that type is created and replaces the existing one. `"soft"`: if source and target are the same type, only settings are applied onto the existing object (as if `type` had not been specified); objects are replaced only when the types differ. Use `"soft"` to update a live chart from a modified config without rebuilding it.
|
|
693
|
+
|
|
694
|
+
var parser = am5plugins\_json.JsonParser.new(root);
|
|
695
|
+
parser.parse(config, { parent: root.container, updateTargets: "soft" });
|
|
696
|
+
|
|
697
|
+
A config may also carry a top-level `root` section *(5.20.2)* whose `settings`/`properties` are applied to the `Root` object before the chart is parsed (`ChartSerializer` writes one when `includeRoot: true`).
|
|
698
|
+
|
|
682
699
|
### Post-parse handler
|
|
683
700
|
|
|
684
701
|
The `parse()` method is asynchronous and returns a `Promise`.
|
|
@@ -99,6 +99,30 @@ And the data:
|
|
|
99
99
|
}\];
|
|
100
100
|
|
|
101
101
|
|
|
102
|
+
## Backgrounds (5.20.7)
|
|
103
|
+
|
|
104
|
+
A container's `background` (e.g. the background of a `Label`) has no data item of its own. Since 5.20.7, a background that has its own `templateField` reads the data item of the container it belongs to, so a background can be set per data item — for example, a different label background on each bullet:
|
|
105
|
+
|
|
106
|
+
```javascript
|
|
107
|
+
series.bullets.push(function (root, series, dataItem) {
|
|
108
|
+
return am5.Bullet.new(root, {
|
|
109
|
+
sprite: am5.Label.new(root, {
|
|
110
|
+
text: "{valueY}",
|
|
111
|
+
populateText: true,
|
|
112
|
+
background: am5.RoundedRectangle.new(root, {
|
|
113
|
+
templateField: "labelBg"
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Data
|
|
120
|
+
// { date: ..., value: 1000, labelBg: { fill: am5.color(0xff0000) } }
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Before 5.20.7 such a `templateField` on a background was never applied.
|
|
124
|
+
|
|
125
|
+
|
|
102
126
|
## Bullets
|
|
103
127
|
|
|
104
128
|
There are some caveats involved when using template fields with bullets.
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
title: "Box Plot Chart"
|
|
3
3
|
source: "https://www.amcharts.com/demos/box-plot-chart/"
|
|
4
4
|
category: "candlestick-ohlc"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
Box plot chart (also
|
|
8
|
+
Box plot chart (also known as boxplot, box-and-whisker plot, box-and-whisker diagram) is a way of displaying statistical data based on five numbers: minimum, first quartile (25th percentile), median, third quartile (75th percentile) and maximum.
|
|
9
|
+
In this JavaScript box plot, each day's distribution is drawn with a CandlestickSeries: the box spans the first to the third quartile, and the whiskers reach the minimum and maximum. The median is a StepLineSeries with noRisers: true, which draws a horizontal line inside each box.
|
|
9
10
|
XY chart
|
|
10
11
|
Candlestick series
|
|
11
12
|
Step line series
|
|
@@ -65,32 +66,35 @@ var series = chart.series.push(
|
|
|
65
66
|
am5xy.CandlestickSeries.new(root, {
|
|
66
67
|
fill: color,
|
|
67
68
|
stroke: color,
|
|
68
|
-
name: "
|
|
69
|
+
name: "Distribution",
|
|
69
70
|
xAxis: xAxis,
|
|
70
71
|
yAxis: yAxis,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
// Box: first quartile (Q1) to third quartile (Q3); whiskers: minimum to maximum
|
|
73
|
+
valueYField: "q3",
|
|
74
|
+
openValueYField: "q1",
|
|
75
|
+
lowValueYField: "min",
|
|
76
|
+
highValueYField: "max",
|
|
75
77
|
valueXField: "date",
|
|
76
78
|
tooltip: am5.Tooltip.new(root, {
|
|
77
79
|
pointerOrientation: "horizontal",
|
|
78
|
-
labelText: "
|
|
79
|
-
low: {lowValueY}
|
|
80
|
-
high: {highValueY}
|
|
81
|
-
close: {valueY},
|
|
82
|
-
mediana: {mediana}"
|
|
80
|
+
labelText: "Max: {highValueY}\nQ3: {valueY}\nMedian: {median}\nQ1: {openValueY}\nMin: {lowValueY}"
|
|
83
81
|
})
|
|
84
82
|
})
|
|
85
83
|
);
|
|
86
84
|
|
|
87
|
-
//
|
|
88
|
-
var
|
|
85
|
+
// Box plots use one colour: override the candlestick rise/drop colouring
|
|
86
|
+
var boxColor = chart.get("colors").getIndex(0);
|
|
87
|
+
am5.array.each(["riseFromOpen", "dropFromOpen", "riseFromPrevious", "dropFromPrevious"], function(state) {
|
|
88
|
+
series.columns.template.states.create(state, { fill: boxColor, stroke: boxColor });
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Median line inside each box
|
|
92
|
+
var medianSeries = chart.series.push(
|
|
89
93
|
am5xy.StepLineSeries.new(root, {
|
|
90
94
|
stroke: root.interfaceColors.get("background"),
|
|
91
95
|
xAxis: xAxis,
|
|
92
96
|
yAxis: yAxis,
|
|
93
|
-
valueYField: "
|
|
97
|
+
valueYField: "median",
|
|
94
98
|
valueXField: "date",
|
|
95
99
|
noRisers: true
|
|
96
100
|
})
|
|
@@ -103,95 +107,96 @@ var cursor = chart.set("cursor", am5xy.XYCursor.new(root, {
|
|
|
103
107
|
}));
|
|
104
108
|
cursor.lineY.set("visible", false);
|
|
105
109
|
|
|
110
|
+
// Five-number summary for each day: minimum, first quartile, median, third quartile, maximum
|
|
106
111
|
var data = [
|
|
107
112
|
{
|
|
108
|
-
date: "
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
date: "2027-08-01",
|
|
114
|
+
min: 124.1,
|
|
115
|
+
q1: 129.6,
|
|
116
|
+
median: 132.2,
|
|
117
|
+
q3: 134.8,
|
|
118
|
+
max: 139.5
|
|
113
119
|
},
|
|
114
120
|
{
|
|
115
|
-
date: "
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
date: "2027-08-02",
|
|
122
|
+
min: 122.8,
|
|
123
|
+
q1: 128.4,
|
|
124
|
+
median: 131.0,
|
|
125
|
+
q3: 133.9,
|
|
126
|
+
max: 140.2
|
|
120
127
|
},
|
|
121
128
|
{
|
|
122
|
-
date: "
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
129
|
+
date: "2027-08-03",
|
|
130
|
+
min: 125.6,
|
|
131
|
+
q1: 130.1,
|
|
132
|
+
median: 133.4,
|
|
133
|
+
q3: 136.2,
|
|
134
|
+
max: 142.8
|
|
127
135
|
},
|
|
128
136
|
{
|
|
129
|
-
date: "
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
137
|
+
date: "2027-08-04",
|
|
138
|
+
min: 127.3,
|
|
139
|
+
q1: 131.8,
|
|
140
|
+
median: 134.0,
|
|
141
|
+
q3: 137.5,
|
|
142
|
+
max: 144.1
|
|
134
143
|
},
|
|
135
144
|
{
|
|
136
|
-
date: "
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
date: "2027-08-05",
|
|
146
|
+
min: 123.9,
|
|
147
|
+
q1: 129.2,
|
|
148
|
+
median: 131.7,
|
|
149
|
+
q3: 134.3,
|
|
150
|
+
max: 138.6
|
|
141
151
|
},
|
|
142
152
|
{
|
|
143
|
-
date: "
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
153
|
+
date: "2027-08-06",
|
|
154
|
+
min: 121.4,
|
|
155
|
+
q1: 127.5,
|
|
156
|
+
median: 130.3,
|
|
157
|
+
q3: 133.1,
|
|
158
|
+
max: 137.9
|
|
148
159
|
},
|
|
149
160
|
{
|
|
150
|
-
date: "
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
161
|
+
date: "2027-08-07",
|
|
162
|
+
min: 124.8,
|
|
163
|
+
q1: 130.6,
|
|
164
|
+
median: 133.9,
|
|
165
|
+
q3: 137.0,
|
|
166
|
+
max: 143.4
|
|
155
167
|
},
|
|
156
168
|
{
|
|
157
|
-
date: "
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
169
|
+
date: "2027-08-08",
|
|
170
|
+
min: 126.2,
|
|
171
|
+
q1: 131.4,
|
|
172
|
+
median: 134.6,
|
|
173
|
+
q3: 138.1,
|
|
174
|
+
max: 145.0
|
|
162
175
|
},
|
|
163
176
|
{
|
|
164
|
-
date: "
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
177
|
+
date: "2027-08-09",
|
|
178
|
+
min: 125.0,
|
|
179
|
+
q1: 130.2,
|
|
180
|
+
median: 132.8,
|
|
181
|
+
q3: 135.9,
|
|
182
|
+
max: 141.7
|
|
169
183
|
}
|
|
170
184
|
];
|
|
171
185
|
|
|
172
|
-
addMediana();
|
|
173
|
-
|
|
174
|
-
function addMediana() {
|
|
175
|
-
for (var i = 0; i < data.length; i++) {
|
|
176
|
-
var dataItem = data[i];
|
|
177
|
-
dataItem.mediana =
|
|
178
|
-
Number(dataItem.low) + (Number(dataItem.high) - Number(dataItem.low)) / 2;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
186
|
series.data.processor = am5.DataProcessor.new(root, {
|
|
183
187
|
dateFields: ["date"],
|
|
184
188
|
dateFormat: "yyyy-MM-dd"
|
|
185
189
|
});
|
|
186
190
|
|
|
187
191
|
series.data.setAll(data);
|
|
188
|
-
|
|
192
|
+
medianSeries.data.setAll(data);
|
|
189
193
|
|
|
190
194
|
// Make stuff animate on load
|
|
191
195
|
// https://www.amcharts.com/docs/v5/concepts/animations/
|
|
192
196
|
series.appear(1000, 100);
|
|
193
|
-
|
|
194
|
-
chart.appear(1000, 100);
|
|
197
|
+
medianSeries.appear(1000, 100);
|
|
198
|
+
chart.appear(1000, 100);
|
|
199
|
+
|
|
195
200
|
```
|
|
196
201
|
|
|
197
202
|
## HTML
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: "Candlestick Chart"
|
|
3
3
|
source: "https://www.amcharts.com/demos/candlestick-chart/"
|
|
4
4
|
category: "candlestick-ohlc"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
Candlestick chart is one of the most common ways to display financial data such as stock trading prices over time. Creating candlestick charts with amCharts is really easy and you get a lot of advanced features such as grouping right out of the box (try zooming in and out).
|
|
@@ -121,10 +121,7 @@ var series = chart.series.push(
|
|
|
121
121
|
legendRangeValueText: "{valueYClose}",
|
|
122
122
|
tooltip: am5.Tooltip.new(root, {
|
|
123
123
|
pointerOrientation: "horizontal",
|
|
124
|
-
labelText: "open: {openValueY}
|
|
125
|
-
low: {lowValueY}
|
|
126
|
-
high: {highValueY}
|
|
127
|
-
close: {valueY}"
|
|
124
|
+
labelText: "open: {openValueY}\nlow: {lowValueY}\nhigh: {highValueY}\nclose: {valueY}"
|
|
128
125
|
})
|
|
129
126
|
})
|
|
130
127
|
);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: "OHLC Chart"
|
|
3
3
|
source: "https://www.amcharts.com/demos/ohlc-chart/"
|
|
4
4
|
category: "candlestick-ohlc"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
The OHLC chart is a very popular way to display financial (and other) data over time with open, high, low, and close values for periods.
|
|
@@ -115,10 +115,7 @@ var series = chart.series.push(am5xy.OHLCSeries.new(root, {
|
|
|
115
115
|
legendRangeValueText: "{valueYClose}",
|
|
116
116
|
tooltip: am5.Tooltip.new(root, {
|
|
117
117
|
pointerOrientation: "horizontal",
|
|
118
|
-
labelText: "open: {openValueY}
|
|
119
|
-
low: {lowValueY}
|
|
120
|
-
high: {highValueY}
|
|
121
|
-
close: {valueY}"
|
|
118
|
+
labelText: "open: {openValueY}\nlow: {lowValueY}\nhigh: {highValueY}\nclose: {valueY}"
|
|
122
119
|
})
|
|
123
120
|
}));
|
|
124
121
|
|
|
@@ -170,7 +167,7 @@ var sbseries = scrollbar.chart.series.push(am5xy.LineSeries.new(root, {
|
|
|
170
167
|
|
|
171
168
|
// Add legend
|
|
172
169
|
// https://www.amcharts.com/docs/v5/charts/xy-chart/legend-xy-series/
|
|
173
|
-
var legend =
|
|
170
|
+
var legend = chart.plotContainer.children.push(
|
|
174
171
|
am5.Legend.new(root, {})
|
|
175
172
|
);
|
|
176
173
|
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
title: "On-Demand Data Loading"
|
|
3
3
|
source: "https://www.amcharts.com/demos/on-demand-data-loading/"
|
|
4
4
|
category: "candlestick-ohlc"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
This demo shows a sample Stock chart setup which can load its data on-demand.
|
|
9
9
|
Try panning the chart chart, zooming, switching granularity. The code will gracefully handle loading missing data from the backend.
|
|
10
10
|
It relies on a few of the technologies implemented in amCharts 5:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
Incremental data loading
|
|
12
|
+
CSV data loading and parsing
|
|
13
|
+
Stacked axes
|
|
14
|
+
Incremental on-demand data loading (commentary about the code behind this demo)
|
|
15
|
+
Stacked axes
|
|
16
|
+
XY chart
|
|
17
17
|
|
|
18
18
|
## JavaScript
|
|
19
19
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: "Professional Candlesticks"
|
|
3
3
|
source: "https://www.amcharts.com/demos/professional-candlesticks/"
|
|
4
4
|
category: "candlestick-ohlc"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
Professional candlestick chart is similar to the "regular" candlestick chart but applies different coloring logic. You may notice that some candlesticks are filled and some are hollow. More about this type of candlesticks can be found in the docs.
|
|
@@ -120,10 +120,7 @@ var series = chart.series.push(
|
|
|
120
120
|
legendRangeValueText: "{valueYClose}",
|
|
121
121
|
tooltip: am5.Tooltip.new(root, {
|
|
122
122
|
pointerOrientation: "horizontal",
|
|
123
|
-
labelText: "open: {openValueY}
|
|
124
|
-
low: {lowValueY}
|
|
125
|
-
high: {highValueY}
|
|
126
|
-
close: {valueY}"
|
|
123
|
+
labelText: "open: {openValueY}\nlow: {lowValueY}\nhigh: {highValueY}\nclose: {valueY}"
|
|
127
124
|
})
|
|
128
125
|
})
|
|
129
126
|
);
|
|
@@ -183,7 +180,7 @@ var sbseries = scrollbar.chart.series.push(
|
|
|
183
180
|
|
|
184
181
|
// Add legend
|
|
185
182
|
// https://www.amcharts.com/docs/v5/charts/xy-chart/legend-xy-series/
|
|
186
|
-
var legend =
|
|
183
|
+
var legend = chart.plotContainer.children.push(am5.Legend.new(root, {}));
|
|
187
184
|
|
|
188
185
|
legend.data.push(series);
|
|
189
186
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: "Stock Chart Candlesticks"
|
|
3
3
|
source: "https://www.amcharts.com/demos/stock-chart-candlesticks/"
|
|
4
4
|
category: "candlestick-ohlc"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
You can create your typical stock charts with amCharts XYChart. In this example we create a candlestick stock price graph and a volume graph under it.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
title: "100% Stacked Column Chart"
|
|
3
3
|
source: "https://www.amcharts.com/demos/100-stacked-column-chart/"
|
|
4
4
|
category: "column-bar"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
100% stacked column or bar chart is a good way to display some categories of a whole changing over time. For example, a company may use 100% stacked column chart to display what product lines contributed to its revenue by calendar quarter. The downside is that in such a chart it is quite difficult to visually compare the changes over time (except for the first item/series).
|
|
9
9
|
Key implementation details
|
|
10
10
|
You don't need to perform percentage calculations in your code. You can pass your real values to amCharts and the chart will do the rest. For this purpose, we enable calculateTotals (more info here) on the value axis (the Y-axis in this case) and set its range to 0 to 100 (plus enforce it with strictMinMax to disable "smart" min/max features).
|
|
11
11
|
Then, in our series we set the valueYField to our real value, as usual. But after that we take advantage of the "Display fields" feature in amCharts. Display fields allow us to reference derivative calculated values instead of raw values from our data set. In this case we want to set our respective display field (valueYFieldShow) to display the percentage share of our real value. For this we set it to the valueYTotalPercent calculated field.
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
Calculated values on value axes
|
|
13
|
+
Display fields - a way to show alternative values
|
|
14
14
|
|
|
15
15
|
## JavaScript
|
|
16
16
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: "Bar and Line Chart Mix"
|
|
3
3
|
source: "https://www.amcharts.com/demos/bar-and-line-chart-mix/"
|
|
4
4
|
category: "column-bar"
|
|
5
|
-
scraped: "2026-
|
|
5
|
+
scraped: "2026-09-29"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
Mixing bar and line chart in the same visual is a good way to emphasize the difference between series while still maintaining their relationship.
|
|
@@ -40,13 +40,6 @@ var chart = root.container.children.push(am5xy.XYChart.new(root, {
|
|
|
40
40
|
}));
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
// Add legend
|
|
44
|
-
// https://www.amcharts.com/docs/v5/charts/xy-chart/legend-xy-series/
|
|
45
|
-
var legend = chart.children.push(am5.Legend.new(root, {
|
|
46
|
-
centerX: am5.p50,
|
|
47
|
-
x: am5.p50
|
|
48
|
-
}))
|
|
49
|
-
|
|
50
43
|
var data = [{
|
|
51
44
|
"year": "2005",
|
|
52
45
|
"income": 23.5,
|
|
@@ -112,8 +105,7 @@ var series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
|
112
105
|
sequencedInterpolation: true,
|
|
113
106
|
tooltip: am5.Tooltip.new(root, {
|
|
114
107
|
pointerOrientation: "horizontal",
|
|
115
|
-
labelText: "[bold]{name}[/]
|
|
116
|
-
{categoryY}: {valueX}"
|
|
108
|
+
labelText: "[bold]{name}[/]\n{categoryY}: {valueX}"
|
|
117
109
|
})
|
|
118
110
|
}));
|
|
119
111
|
|
|
@@ -131,8 +123,7 @@ var series2 = chart.series.push(am5xy.LineSeries.new(root, {
|
|
|
131
123
|
sequencedInterpolation: true,
|
|
132
124
|
tooltip: am5.Tooltip.new(root, {
|
|
133
125
|
pointerOrientation: "horizontal",
|
|
134
|
-
labelText: "[bold]{name}[/]
|
|
135
|
-
{categoryY}: {valueX}"
|
|
126
|
+
labelText: "[bold]{name}[/]\n{categoryY}: {valueX}"
|
|
136
127
|
})
|
|
137
128
|
}));
|
|
138
129
|
|