How to create area range chart


I want to create area range chart as given in the following <a href="http://jsfiddle.net/D4w7G/3" rel="nofollow">link</a>

I want to add data to ranges using loop on my data. What should be the type of the ranges to create chart?

Please suggest. Thanks in advance. Here's the JSFiddle code:


<script src="http://code.highcharts.com/highcharts.js"></script> <script src="http://code.highcharts.com/highcharts-more.js"></script> <script src="http://code.highcharts.com/modules/exporting.js"></script> <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>


$(function () { var ranges = [[1246406400000,33,22],[1246492800000,24,12],[1246579200000,15,1],[1246665600000,28,17],[1246752000000,22,12],[1246838400000,34,22],[1246924800000,30,19],[1247011200000,27,15],[1247097600000,35,24],[1247184000000,29,14],[1247270400000,32,20],[1247356800000,32,21],[1247443200000,34,23],[1247529600000,19,9],[1247616000000,31,21],[1247702400000,22,7],[1247788800000,25,11],[1247875200000,19,6],[1247961600000,33,18],[1248048000000,33,18],[1248134400000,21,7],[1248220800000,31,19],[1248307200000,25,15],[1248393600000,29,19],[1248480000000,34,23],[1248566400000,21,9],[1248652800000,27,12],[1248739200000,19,4],[1248825600000,32,19],[1248912000000,32,20],[1248998400000,16,1]], ranges2 = [[1246406400000,22,-22],[1246492800000,12,-12],[1246579200000,1,-1],[1246665600000,17,-17],[1246752000000,12,-12],[1246838400000,22,-22],[1246924800000,19,-19],[1247011200000,15,-15],[1247097600000,24,-24],[1247184000000,14,-14],[1247270400000,20,-20],[1247356800000,21,-21],[1247443200000,23,-23],[1247529600000,9,-9],[1247616000000,21,-21],[1247702400000,7,-7],[1247788800000,11,-11],[1247875200000,6,-6],[1247961600000,18,-18],[1248048000000,18,-18],[1248134400000,7,-7],[1248220800000,19,-19],[1248307200000,15,-15],[1248393600000,19,-19],[1248480000000,23,-23],[1248566400000,9,-9],[1248652800000,12,-12],[1248739200000,4,-4],[1248825600000,19,-19],[1248912000000,20,-20],[1248998400000,1,-1]], ranges3 = [[1246406400000,-22,-45],[1246492800000,-12,-30],[1246579200000,-1,-17],[1246665600000,-17,-43],[1246752000000,-12,-40],[1246838400000,-22,-45],[1246924800000,-19,-43],[1247011200000,-15,-45],[1247097600000,-24,-50],[1247184000000,-14,-37],[1247270400000,-20,-44],[1247356800000,-21,-42],[1247443200000,-23,-42],[1247529600000,-9,-37],[1247616000000,-21,-40],[1247702400000,-7,-24],[1247788800000,-11,-27],[1247875200000,-6,-27],[1247961600000,-18,-34],[1248048000000,-18,-46],[1248134400000,-7,-36],[1248220800000,-19,-48],[1248307200000,-15,-30],[1248393600000,-19,-49],[1248480000000,-23,-50],[1248566400000,-9,-38],[1248652800000,-12,-27],[1248739200000,-4,-26],[1248825600000,-19,-45],[1248912000000,-20,-40],[1248998400000,-1,-17]]; $('#container').highcharts({ title: { text: 'Sentiment Flood Map' }, xAxis: { type: 'datetime' }, yAxis: { title: { text: null } }, tooltip: { crosshairs: true, shared: true, valueSuffix: '' }, legend: { }, series: [ { name: 'Positive', data: ranges, type: 'arearange', lineWidth: 0, linkedTo: ':previous', color: Highcharts.getOptions().colors[2], fillOpacity: 0.8, zIndex: 0 } , { name: 'Neutral', data: ranges2, type: 'arearange', lineWidth: 0, linkedTo: ':previous', color: Highcharts.getOptions().colors[1], fillOpacity: 0.8, zIndex: 0 } , { name: 'Negative', data: ranges3, type: 'arearange', lineWidth: 0, linkedTo: ':previous', color: Highcharts.getOptions().colors[3], fillOpacity: 0.8, zIndex: 0 } ] }); });


Here is an example the produces a Chart graphic just like the one in the linked image.

Note: After I have created a few testdata I calculate a dummy series with a transparent color that will make the whole data stack up so that the median of the "neutral" series sits nicely on one horizontal line.

int numPoints = 30; // create some test data List<int> neutralData = new List<int>(); List<int> negativeData = new List<int>(); List<int> positiveData = new List<int>(); List<int> dummyData = new List<int>(); for (int i = 0; i < numPoints; i++) { // the real data series, using a Random R: positiveData.Add(R.Next(i + 22)); neutralData .Add(R.Next(i + 33)); negativeData.Add(R.Next(i + 44)); // calculate the transparent bottom series: dummyData.Add( - neutralData[i] / 2 - negativeData[i]); } // set up the Chart: chart1.ChartAreas.Add("StackedArea"); // if necessary Series s0 = chart1.Series.Add(" "); Series s1 = chart1.Series.Add("negative"); Series s2 = chart1.Series.Add("neutral"); Series s3 = chart1.Series.Add("positive"); foreach (Series s in chart1.Series) s.ChartType = SeriesChartType.StackedArea; s0.Color = Color.Transparent; s1.Color = Color.FromArgb(200, Color.Red); s2.Color = Color.FromArgb(200, Color.LightSlateGray); s3.Color = Color.FromArgb(200, Color.Green) // now add the data points: for (int i = 0; i < numPoints; i++) { s0.Points.AddXY(i, dummyData[i]); s1.Points.AddXY(i, negativeData[i] ); s2.Points.AddXY(i, neutralData [i]); s3.Points.AddXY(i, positiveData[i]); }

If you want to show a tooltip similar to the one from your example you can add this to the AddXY loop:

int a2 = dummyData[i] + negativeData[i]; int a3 = a2 + neutralData[i]; int a4 = a3 + positiveData[i]; string tt = string.Format( "Data Point {0}\r\nPositive: {1} - {2}\r\n" + "Neutral: {2} - {3}\r\nNegative: {3} - {4}", i, a4, a3, a2, dummyData[i]); s1.Points[i].ToolTip = tt; s2.Points[i].ToolTip = tt; s3.Points[i].ToolTip = tt;

Here is an example image: <img alt="StackedArea Chart with Tooltip" class="b-lazy" data-src="https://i.stack.imgur.com/66kEb.png" data-original="https://i.stack.imgur.com/66kEb.png" src="https://etrip.eimg.top/images/2019/05/07/timg.gif" />


You can not create a chart exactly like the one shown in link but you can use different series on your chart. I am posting the code that creates a chart and populates it with 2 series, you can add as many series as you want.

DataSet dataSet; ConnectionClass.GetInstance().connection_string = Properties.Settings.Default.MindMuscleConnectionString; ConnectionClass.GetInstance().Sql = "Select Count(MemberInfo.memberName) as 'Members', CompetitionName as 'Competition' FROM MemberInfo, MemberBodyInfo, Competition WHERE MemberInfo.memberID = MemberBodyInfo.memberID AND MemberBodyInfo.weight >= Competition.CompetitionCategory and MemberBodyInfo.weight <= Competition.CompetitionCategory + 5 group by CompetitionName;"; dataSet = ConnectionClass.GetInstance().GetConnection; chart1.Series["Series1"].Name = "Members"; chart1.Series["Members"].YValueMembers = "Members"; chart1.Series["Members"].XValueMember = "Competition"; chart1.Series.Add("Members2"); chart1.Series["Members2"].ChartType = SeriesChartType.StackedArea; chart1.Series["Members2"].IsValueShownAsLabel = true; chart1.Series["Members2"].YValueMembers = "Members"; chart1.Series["Members2"].XValueMember = "Competition"; this.chart1.Titles.Add("Competition Participants"); // Set the chart title chart1.Series["Members"].ChartType = SeriesChartType.StackedArea; chart1.Series["Members"].IsValueShownAsLabel = true; // To show chart value chart1.DataSource = dataSet; chart1.DataBind();

I have not actually created a new series from some different data... Both series are same here but I have just showed you an example.


  • how to make foreign key relationship on physically distributed data?
  • how to fill triangle in swift using Core graphics
  • Set cell vlookup value based on changing Combobox value
  • html/javascript canvas change set value to a user input
  • Create a marker on the edge of a circle using jQuery/Javascript/GM
  • Typeerror occours when I tried to get a graphic from CSV file in python
  • Matplotlib line width based on axis, not on points
  • using multiple labels with tooltip plugin
  • Disable component editing in CQ/AEM
  • Union of circles and polygon in leaflet
  • Customizing default y-axis label in Highcharts
  • Generic EditorTemplate for an Enum with Text Select Option Value
  • WCF web service returning json format data
  • Primefaces Dialog Framework — dialogReturn event from menuitem
  • Slow Performance When Reading Excel With Microsoft.office.Interop.Excel
  • How can I transform an array of characters with a few lines of code to a data.frame?
  • Want to move y-axis scrollbar with mouse wheel in highcharts/highstock
  • “stack level too deep” When Processing Carrierwave Image Versions in Nested Form
  • ng-bootstrap - ngbtooltip not working with [(ngModel)]
  • Sortable Columns In scala.swing.Table
  • DataTables+RequireJS: Cannot read property 'defaults' of undefined
  • R Error - cannot change value of locked binding for 'df'
  • Compare a column between 2 csv files and write differences using Python
  • Write pseudocode of a program that prints such a pattern
  • Avoiding try/catch hell in my web pages
  • href inside href [duplicate]
  • Ajax add to cart is not adding products to the cart
  • SQL Server 2008 R2 - Islands and Gaps [closed]
  • SQL Server: +(unary) operator on non-numeric Strings
  • Color time-series based on column values in pandas
  • Geom_jitter colour based on values
  • Efficient & Pythonic way of finding all possible sublists of a list in given range and the minim
  • gspread or such: help me get cell coordinates (not value)
  • How to define custom class, title, and target in Link Browser for content elements and the new rte_c
  • Ionic 2 storage is not cleaning up on uninstall - Only for signed APK
  • preg_replace Double Spaces to tab (\\t) at the beginning of a line
  • Updated Ionic CLI but shows previous version (Windows)
  • align graphs with different xlab
  • trying to dynamically update Highchart column chart but series undefined
  • Conditional In-Line CSS for IE and Others?