Difference between revisions of "Spline chart with special highlight"

From JSXGraph Wiki
Jump to navigationJump to search
 
(7 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
<jsxgraph width="600" height="600">
 
<jsxgraph width="600" height="600">
            board = JXG.JSXGraph.initBoard('jxgbox', {originX: 50, originY: 500, unitX: 50, unitY: 50});
+
var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-1, 10, 11, -2]});
            board.suspendUpdate();
+
board.suspendUpdate();
            var dataArr = [[0,1,2,3,4,5,6,7,8,9,10], [4,1,3,2,5,7,1.5,2,4.5,8,5]];         
+
var dataArr = [[0,1,2,3,4,5,6,7,8,9,10], [4,1,3,2,5,7,1.5,2,4.5,8,5]];         
            var axisx = board.createElement('axis', [[0,0], [1,0]], {strokeColor:'black'});
+
var axisx = board.create('axis', [[0,0], [1,0]], {strokeColor:'black'});
            var axisy = board.createElement('axis', [[0,0], [0,1]], {strokeColor:'black'});
+
var axisy = board.create('axis', [[0,0], [0,1]], {strokeColor:'black'});
            var chart = board.createElement('chart', dataArr, {chartStyle:'radar,point',labels:dataArr});
+
var chart = board.create('chart', dataArr, {chartStyle:'spline,point',labels:dataArr});
            //chart[0].setProperty({strokeColor:'#32CD32',highlightStrokeColor:'#32CD32',strokeWidth:'3px',shadow:true});
+
chart[0].setProperty({strokeColor:'#32CD32',highlightStrokeColor:'#32CD32',strokeWidth:3});
            board.unsuspendUpdate();  
+
board.unsuspendUpdate();  
            var i;
+
var i, animate;
            for(i=0; i<chart[1].length; i++) {
+
for(i=0; i<chart[1].length; i++) {
                chart[1][i].setProperty({face:'square',size:5,strokeColor:'#32CD32',fillColor:'#EEE9BF',strokeWidth:'3px',shadow:true});
+
    chart[1][i].setProperty({face:'square',size:5,strokeColor:'#32CD32',fillColor:'#EEE9BF',strokeWidth:3});
                chart[1][i].highlight = function() {     
+
    chart[1][i].highlight = function() {     
                    var ms = 200, to = 10, from = 5, difference, el = this, start = new Date, animate;
+
        var ms = 200, to = 10, from = 5, difference, el = this, start = new Date, animate;
                    difference = (to-from)/ms;
+
        difference = (to-from)/ms;
                   
+
 
                    function step() {
+
        function step() {
                        var time = new Date - start, current;
+
            var time = new Date - start, current;
                        if(time < ms) {             
+
            if(time < ms) {             
                            current = from + time * difference;
+
                current = from + time * difference;
                            el.visProp['size'] = current;
+
                el.visProp['size'] = current;
                            el.board.renderer.updatePoint(el);
+
                el.board.renderer.updatePoint(el);
                            animate = setTimeout(step,1);
+
                animate = setTimeout(step,1);
                        }
+
            }
                        else {
+
            else {
                            current = from + ms * difference;
+
                current = from + ms * difference;
                            el.visProp['size'] = current;
+
                el.visProp['size'] = current;
                            el.board.renderer.updatePoint(el);
+
                el.board.renderer.updatePoint(el);
                            clearTimeout(animate);
+
                clearTimeout(animate);
                        }
+
            }
                    }
+
        }
                    animate = setTimeout(step,1);
+
        animate = setTimeout(step,1);
                   
+
 
                }
+
    }
                chart[1][i].noHighlight = function() {
+
    chart[1][i].noHighlight = function() {
                    var ms = 200, from = 10, to = 5, difference, el = this, start = new Date;
+
        var ms = 200, from = 10, to = 5, difference, el = this, start = new Date;
                    difference = (to-from)/ms;
+
        difference = (to-from)/ms;
                 
+
 
                    function step() {
+
        function step() {
                        var time = new Date - start, current;
+
            var time = new Date - start, current;
                        if(time < ms) {             
+
            if(time < ms) {             
                            current = from + time * difference;
+
                current = from + time * difference;
                            el.visProp['size'] = current;
+
                el.visProp['size'] = current;
                            el.board.renderer.updatePoint(el);
+
                el.board.renderer.updatePoint(el);
                            animate = setTimeout(step,1);
+
                animate = setTimeout(step,1);
                        }
+
            }
                        else {
+
            else {
                            current = from + ms * difference;
+
                current = from + ms * difference;
                            el.visProp['size'] = current;
+
                el.visProp['size'] = current;
                            el.board.renderer.updatePoint(el);
+
                el.board.renderer.updatePoint(el);
                            clearTimeout(animate);
+
                clearTimeout(animate);
                        }
+
            }
                    }
+
        }
                    animate = setTimeout(step,1);             
+
        animate = setTimeout(step,1);             
                }                   
+
    }                   
            }  
+
}  
 
</jsxgraph>
 
</jsxgraph>
  
 
===JavaScript code to produce this chart===
 
===JavaScript code to produce this chart===
<source lang="xml">
+
<source lang="javascript">
<jsxgraph width="600" height="600">
+
var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-1, 10, 11, -2]});
            board = JXG.JSXGraph.initBoard('jxgbox', {originX: 50, originY: 500, unitX: 50, unitY: 50});
+
board.suspendUpdate();
            board.suspendUpdate();
+
var dataArr = [[0,1,2,3,4,5,6,7,8,9,10], [4,1,3,2,5,7,1.5,2,4.5,8,5]];         
            var dataArr = [[0,1,2,3,4,5,6,7,8,9,10], [4,1,3,2,5,7,1.5,2,4.5,8,5]];         
+
var axisx = board.create('axis', [[0,0], [1,0]], {strokeColor:'black'});
            var axisx = board.createElement('axis', [[0,0], [1,0]], {strokeColor:'black'});
+
var axisy = board.create('axis', [[0,0], [0,1]], {strokeColor:'black'});
            var axisy = board.createElement('axis', [[0,0], [0,1]], {strokeColor:'black'});
+
var chart = board.create('chart', dataArr, {chartStyle:'spline,point',labels:dataArr});
            var chart = board.createElement('chart', dataArr, {chartStyle:'spline,point',labels:dataArr});
+
chart[0].setProperty({strokeColor:'#32CD32',highlightStrokeColor:'#32CD32',strokeWidth:3});
            chart[0].setProperty({strokeColor:'#32CD32',highlightStrokeColor:'#32CD32',strokeWidth:'3px',shadow:true});
+
board.unsuspendUpdate();  
            board.unsuspendUpdate();  
+
var i, animate;
            var i;
+
for(i=0; i<chart[1].length; i++) {
            for(i=0; i<chart[1].length; i++) {
+
    chart[1][i].setProperty({face:'square',size:5,strokeColor:'#32CD32',fillColor:'#EEE9BF',strokeWidth:3});
                chart[1][i].setProperty({face:'square',size:5,strokeColor:'#32CD32',fillColor:'#EEE9BF',strokeWidth:'3px',shadow:true});
+
    chart[1][i].highlight = function() {     
                chart[1][i].highlight = function() {     
+
        var ms = 200, to = 10, from = 5, difference, el = this, start = new Date, animate;
                    var ms = 200, to = 10, from = 5, difference, el = this, start = new Date, animate;
+
        difference = (to-from)/ms;
                    difference = (to-from)/ms;
+
 
                   
+
        function step() {
                    function step() {
+
            var time = new Date - start, current;
                        var time = new Date - start, current;
+
            if(time < ms) {             
                        if(time < ms) {             
+
                current = from + time * difference;
                            current = from + time * difference;
+
                el.visProp['size'] = current;
                            el.visProp['size'] = current;
+
                el.board.renderer.updatePoint(el);
                            el.board.renderer.updatePoint(el);
+
                animate = setTimeout(step,1);
                            animate = setTimeout(step,1);
+
            }
                        }
+
            else {
                        else {
+
                current = from + ms * difference;
                            current = from + ms * difference;
+
                el.visProp['size'] = current;
                            el.visProp['size'] = current;
+
                el.board.renderer.updatePoint(el);
                            el.board.renderer.updatePoint(el);
+
                clearTimeout(animate);
                            clearTimeout(animate);
+
            }
                        }
+
        }
                    }
+
        animate = setTimeout(step,1);
                    animate = setTimeout(step,1);
+
 
                   
+
    }
                }
+
    chart[1][i].noHighlight = function() {
                chart[1][i].noHighlight = function() {
+
        var ms = 200, from = 10, to = 5, difference, el = this, start = new Date;
                    var ms = 200, from = 10, to = 5, difference, el = this, start = new Date;
+
        difference = (to-from)/ms;
                    difference = (to-from)/ms;
+
 
                 
+
        function step() {
                    function step() {
+
            var time = new Date - start, current;
                        var time = new Date - start, current;
+
            if(time < ms) {             
                        if(time < ms) {             
+
                current = from + time * difference;
                            current = from + time * difference;
+
                el.visProp['size'] = current;
                            el.visProp['size'] = current;
+
                el.board.renderer.updatePoint(el);
                            el.board.renderer.updatePoint(el);
+
                animate = setTimeout(step,1);
                            animate = setTimeout(step,1);
+
            }
                        }
+
            else {
                        else {
+
                current = from + ms * difference;
                            current = from + ms * difference;
+
                el.visProp['size'] = current;
                            el.visProp['size'] = current;
+
                el.board.renderer.updatePoint(el);
                            el.board.renderer.updatePoint(el);
+
                clearTimeout(animate);
                            clearTimeout(animate);
+
            }
                        }
+
        }
                    }
+
        animate = setTimeout(step,1);             
                    animate = setTimeout(step,1);             
+
    }                   
                }                   
+
}  
            }  
 
</jsxgraph>
 
 
</source>
 
</source>
  
[[Category:Examples]]
+
[[Category:Austragungsstueberl]]
[[Category:Charts]]
 

Latest revision as of 17:00, 17 January 2012

A mixed chart with splines and points. The points get special highlight and noHighlight-methods in order to have an animated highlighting with a growing resp. decreasing radius.

JavaScript code to produce this chart

 var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-1, 10, 11, -2]});
 board.suspendUpdate();
 var dataArr = [[0,1,2,3,4,5,6,7,8,9,10], [4,1,3,2,5,7,1.5,2,4.5,8,5]];        
 var axisx = board.create('axis', [[0,0], [1,0]], {strokeColor:'black'});
 var axisy = board.create('axis', [[0,0], [0,1]], {strokeColor:'black'});
 var chart = board.create('chart', dataArr, {chartStyle:'spline,point',labels:dataArr});
 chart[0].setProperty({strokeColor:'#32CD32',highlightStrokeColor:'#32CD32',strokeWidth:3});
 board.unsuspendUpdate(); 
 var i, animate;
 for(i=0; i<chart[1].length; i++) {
     chart[1][i].setProperty({face:'square',size:5,strokeColor:'#32CD32',fillColor:'#EEE9BF',strokeWidth:3});
     chart[1][i].highlight = function() {    
         var ms = 200, to = 10, from = 5, difference, el = this, start = new Date, animate;
         difference = (to-from)/ms;

         function step() {
             var time = new Date - start, current;
             if(time < ms) {            
                 current = from + time * difference;
                 el.visProp['size'] = current;
                 el.board.renderer.updatePoint(el);
                 animate = setTimeout(step,1);
             }
             else {
                 current = from + ms * difference;
                 el.visProp['size'] = current;
                 el.board.renderer.updatePoint(el);
                 clearTimeout(animate);
             }
         }
         animate = setTimeout(step,1);

     }
     chart[1][i].noHighlight = function() {
         var ms = 200, from = 10, to = 5, difference, el = this, start = new Date;
         difference = (to-from)/ms;

         function step() {
             var time = new Date - start, current;
             if(time < ms) {            
                 current = from + time * difference;
                 el.visProp['size'] = current;
                 el.board.renderer.updatePoint(el);
                 animate = setTimeout(step,1);
             }
             else {
                 current = from + ms * difference;
                 el.visProp['size'] = current;
                 el.board.renderer.updatePoint(el);
                 clearTimeout(animate);
             }
         }
         animate = setTimeout(step,1);            
     }                  
 }