0

I'm using the Kendo bar chart to represent data.

my sample code as follows,

<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.common.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.rtl.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.silver.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.mobile.all.min.css"/>

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/kendo.all.min.js"></script>

<div id="chart"></div>
<script>
    $("#chart").kendoChart({
        title: {
            text: "Kendo Chart Example"
        },
        series: [ {
            name: "Example Series",
            data: [200, 450, 300, 125]
        } ],
        valueAxis: {
          min:100,
          max:600
        },
        categoryAxis:{
            categories: [ 2000, 2001, 2002, 2003 ]
        }
    });
</script>

Currently I set chart's max value as max:600.Now I need to set chart's max: value dynamically based on chart data.

as an example,

  1. if chart data largestvalue is > 500 then need to set the chart's max value as 1000,
  2. if chart data largestvalue is 500 > largestvalue >= 400 then need to set the chart's max value as 600,
  3. if chart data largestvalue is 400 > largestvalue >= 300 then need to set the chart's max value as 500,

How can I do it?

Sachith Wickramaarachchi
  • 5,546
  • 6
  • 39
  • 68

2 Answers2

1

You can use Math.max() to find the largestvalue and determine the max using that

var data = [200, 450, 300, 125];
var largestvalue = Math.max(...data);

var max;
if (largestvalue > 500) {
  max = 1000;
} else if (largestvalue < 500 && largestvalue >= 400) {
  max = 600;
} else if (largestvalue < 400 && largestvalue >= 300) {
  max = 500;
}

$("#chart").kendoChart({
  title: {
    text: "Kendo Chart Example"
  },
  series: [{
    name: "Example Series",
    data: [200, 450, 300, 125]
  }],
  valueAxis: {
    min: 100,
    max: max
  },
  categoryAxis: {
    categories: [2000, 2001, 2002, 2003]
  }
});
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.common.min.css" />
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.rtl.min.css" />
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.silver.min.css" />
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.mobile.all.min.css" />

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/kendo.all.min.js"></script>

<div id="chart"></div>
User863
  • 19,346
  • 2
  • 17
  • 41
1

Try below script

let data = [200, 600, 300, 125];
var largestvalue = Math.max.apply(Math, data);
var chart;
var max;

if (largestvalue > 500) {
  max = 1000;
} else if (largestvalue < 500 && largestvalue >= 400) {
  max = 600;
} else if (largestvalue < 400 && largestvalue >= 300) {
  max = 500;
}

$("#chart").kendoChart({
  title: {
    text: "Kendo Chart Example"
  },
  series: [{
    name: "Example Series",
    data: data
  }],
  valueAxis: {},
  categoryAxis: {
    categories: [2000, 2001, 2002, 2003]
  }
});

var chart = $("#chart").data("kendoChart");        
chart.setOptions({
                 valueAxis: {
                              min: 100,
                              max:  max
                            }
            });

Hope this help Play around here

Sandeep Modak
  • 832
  • 1
  • 5
  • 10