jQWidgets Forums

jQuery UI Widgets Forums Chart Live Chart

This topic contains 3 replies, has 2 voices, and was last updated by  Dimitar 10 years, 9 months ago.

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Live Chart Posts
  • Live Chart #57614

    simcon94
    Participant

    Hi,
    is it possible to set a Live Chart like an plotter?
    My X- Axis is Time, my Y-Axis is the Value.

    Live Chart #57618

    Dimitar
    Participant

    Hello simcon94,

    jqxChart supports live updates, as can be seen in the following demo: http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxchart/javascript_chart_live_updates.htm?arctic.

    Best Regards,
    Dimitar

    jQWidgets team
    http://www.jqwidgets.com/

    Live Chart #57623

    simcon94
    Participant

    But there is the x-axis not dynamic

    Live Chart #57630

    Dimitar
    Participant

    Hi simcon94,

    Here is a modification of the aforementioned demo with x-axis updates:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
        <script type="text/javascript" src="../../scripts/jquery-1.10.2.min.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxdraw.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxchart.core.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxslider.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script>
        <script type="text/javascript" src="../../scripts/demos.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
    
                var data = [
                    { a: 100, b: 200, c: 1 },
                    { a: 120, b: 140, c: 2 },
                    { a: 100, b: 110, c: 3 },
                    { a: 90, b: 135, c: 4 },
                    { a: 70, b: 210, c: 5 },
                    { a: 170, b: 210, c: 6 },
                    { a: 270, b: 350, c: 7 },
                    { a: 710, b: 410, c: 8 },
                    { a: 230, b: 305, c: 9 }
                ];
    
                // prepare jqxChart settings
                var settings = {
                    title: "Live updates demo",
                    description: "Data changes every 3 seconds",
                    enableAnimations: true,
                    animationDuration: 1000,
                    enableAxisTextAnimation: true,
                    showLegend: true,
                    padding: { left: 5, top: 5, right: 5, bottom: 5 },
                    titlePadding: { left: 0, top: 0, right: 0, bottom: 10 },
                    source: data,
                    xAxis:
                        {
                            dataField: "c",
                            unitInterval: 1,
                            gridLinesInterval: 2,
                            valuesOnTicks: false
                        },
                    colorScheme: 'scheme03',
                    seriesGroups:
                        [
                            {
                                type: 'column',
                                columnsGapPercent: 50,
                                alignEndPointsWithIntervals: true,
                                valueAxis:
                                {
                                    minValue: 0,
                                    maxValue: 1000,
                                    description: 'Index Value'
                                },
                                series: [
                                        { dataField: 'a', displayText: 'a', opacity: 1, lineWidth: 1, symbolType: 'circle', fillColorSymbolSelected: 'white', radius: 15 },
                                        { dataField: 'b', displayText: 'b', opacity: 1, lineWidth: 1, symbolType: 'circle', fillColorSymbolSelected: 'white', radius: 15 }
                                ]
                            }
                        ]
                };
    
                // create the chart
                $('#chartContainer').jqxChart(settings);
    
                // get the chart's instance
                var chart = $('#chartContainer').jqxChart('getInstance');
    
                // color scheme drop down
                var colorsSchemesList = ["scheme01", "scheme02", "scheme03", "scheme04", "scheme05", "scheme06", "scheme07", "scheme08"];
                $("#dropDownColors").jqxDropDownList({ source: colorsSchemesList, selectedIndex: 2, width: '200', height: '25', dropDownHeight: 100 });
    
                $('#dropDownColors').on('change', function (event) {
                    var value = event.args.item.value;
                    chart.colorScheme = value;
                    chart.update();
                });
    
                // series type drop down
                var seriesList = ["splinearea", "spline", "column", "scatter", "stackedcolumn", "stackedsplinearea", "stackedspline"];
                $("#dropDownSeries").jqxDropDownList({ source: seriesList, selectedIndex: 2, width: '200', height: '25', dropDownHeight: 100 });
    
                $('#dropDownSeries').on('select', function (event) {
                    var args = event.args;
                    if (args) {
                        var value = args.item.value;
    
                        var isLine = value.indexOf('line') != -1;
                        var isArea = value.indexOf('area') != -1;
    
                        //chart.categoryAxis.valuesOnTicks = isLine || isArea;
                        var group = chart.seriesGroups[0];
                        group.series[0].opacity = group.series[1].opacity = isArea ? 0.7 : 1;
                        group.series[0].lineWidth = group.series[1].lineWidth = isLine ? 2 : 1;
    
                        chart.seriesGroups[0].type = value;
                        chart.update();
                    }
                });
    
                // auto update timer
                var ttimer = setInterval(function () {
                    var newC = data[data.length - 1].c + 1;
                    data.splice(0, 1);
                    var max = 800;
                    data.push({ a: (Math.max(100, (Math.random() * 1000) % max)), b: (Math.max(100, (Math.random() * 1000) % max)), c: newC });
                    $('#chartContainer').jqxChart('update');
                }, 3000);
    
            });
        </script>
    </head>
    <body class='default'>
        <p>
            <div id='chartContainer' style="width: 850px; height: 500px">
            </div>
        </p>
        <table style="width: 680px">
            <tr>
                <td style="padding-left: 50px;">
                    <p style="font-family: Verdana; font-size: 12px;">
                        Select the series type:
                    </p>
                    <div id='dropDownSeries'>
                    </div>
                </td>
                <td>
                    <p style="font-family: Verdana; font-size: 12px;">
                        Select color scheme:
                    </p>
                    <div id='dropDownColors'>
                    </div>
                </td>
            </tr>
        </table>
    </body>
    </html>

    Best Regards,
    Dimitar

    jQWidgets team
    http://www.jqwidgets.com/

Viewing 4 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic.