Highcharts test tool

HTML

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="container"></div>

<button id="extract">Extract segment</button>

CSS

#container {
    min-width: 300px;
    max-width: 800px;
    height: 300px;
    margin: 1em auto;
}

JavaScript

var chart = Highcharts.chart('container', {
    title: {
    		text: 'Click on points to select segment'
    },
    subtitle: {
    		text: 'Click the "extract segment" button to add segment as a new series'
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
            'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    plotOptions: {
      series: {
          point: {
                events: {
                    // Allow selection of two points
                    click: function (e) {
                        var point = e.point,
                            series = point.series;
                        series.selectedPoints = series.selectedPoints || [];
                        series.selectedPoints.push(point);
                        point.select(true, true);
                        if (series.selectedPoints.length > 2) {
                            series.selectedPoints.shift().select(false, true);
                        }
                    }
                }
            }
        }
    },
    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]
});

$('#extract').click(function () {
		Highcharts.each(chart.series, function (series) {
    		var selected = series.selectedPoints,
        		segment = [];
        if (selected && selected.length > 1) {
        		// There are selected points in this series. Locate segment
        		for (var i = Math.min(selected[0].index, selected[1].index); i < Math.max(selected[0].index, selected[1].index) + 1; ++i) {
            		segment.push({
                		category: series.points[i].category,
                    x: series.points[i].x,
                    y: series.points[i].y
                });
            }
            // Add segment as a new series
            chart.addSeries({
            		name: 'Extracted from ' + series.name,
            		data: segment
            });
            // Unselect from series
           ...