Google style chart - interactive: Difference between revisions
From JSXGraph Wiki
A WASSERMANN (talk | contribs) No edit summary |
A WASSERMANN (talk | contribs) No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
By clicking on points one can set new values for the y-coordinates. | |||
<jsxgraph width="647" height="400"> | <jsxgraph width="647" height="400"> | ||
var graph1; | var graph1; | ||
Line 11: | Line 12: | ||
var start = 0; | var start = 0; | ||
var end = 20; | var end = 20; | ||
points.push(brd. | points.push(brd.create('point', [start,0], {visible:false, name:'', fixed:true})); | ||
for (i=start;i<=end;i++) { | for (i=start;i<=end;i++) { | ||
Line 19: | Line 20: | ||
// Plot it | // Plot it | ||
p = brd. | p = brd.create('point', [x1,y1], | ||
{strokeWidth:2, strokeColor:'#ffffff', | {strokeWidth:2, strokeColor:'#ffffff', | ||
highlightStrokeColor:'#0077cc', fillColor:'#0077cc', | highlightStrokeColor:'#0077cc', fillColor:'#0077cc', | ||
Line 33: | Line 34: | ||
var p = points[i+1]; // The point number is one off | var p = points[i+1]; // The point number is one off | ||
var v = prompt("New value:", p.Y())*1.0; | var v = prompt("New value:", p.Y())*1.0; | ||
p.setPosition(JXG.COORDS_BY_USER, p.X(), v); | p.setPosition(JXG.COORDS_BY_USER, p.X(), v); // New coordinates for the point | ||
y[i] = v; | y[i] = v; // New coordinates for the curve | ||
brd.update(); | brd.update(); | ||
}; | }; | ||
} | } | ||
// Filled area. We need two additional points [start,0] and [end,0] | // Filled area. We need two additional points [start,0] and [end,0] | ||
points.push(brd. | points.push(brd.create('point', [end,0], {visible:false, name:'', fixed:true})); | ||
brd. | brd.create('polygon',points, {withLines:false,fillColor:'#e6f2fa'}); | ||
// Curve: | // Curve: | ||
brd. | brd.create('curve', [x,y], | ||
{strokeWidth:3, strokeColor:'#0077cc', | {strokeWidth:3, strokeColor:'#0077cc', | ||
highlightStrokeColor:'#0077cc'} | highlightStrokeColor:'#0077cc'} | ||
); | ); | ||
} | } | ||
doIt(); | doIt(); | ||
</jsxgraph> | </jsxgraph> | ||
===JavaScript code to produce this chart=== | |||
<source lang="javascript"> | |||
var graph1; | |||
var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-1,6,21,-1], axis: true}); | |||
function doIt() { | |||
var i, x1, y1; | |||
var p; | |||
var points = []; | |||
var x = []; | |||
var y = []; | |||
var start = 0; | |||
var end = 20; | |||
points.push(brd.create('point', [start,0], {visible:false, name:'', fixed:true})); | |||
for (i=start;i<=end;i++) { | |||
// Generate random coordinates | |||
x1 = i; | |||
y1 = Math.random()*4+1; | |||
// Plot it | |||
p = brd.create('point', [x1,y1], | |||
{strokeWidth:2, strokeColor:'#ffffff', | |||
highlightStrokeColor:'#0077cc', fillColor:'#0077cc', | |||
highlightFillColor:'#0077cc', style:6, name:'', fixed:true} | |||
); | |||
points.push(p); | |||
x.push(x1); | |||
y.push(y1); | |||
p.rendNode._num = i; // memorize the number of this point in the array | |||
p.rendNode.onclick = function() { | |||
var i = this._num; // Now we can access the number again | |||
var p = points[i+1]; // The point number is one off | |||
var v = prompt("New value:", p.Y())*1.0; | |||
p.setPosition(JXG.COORDS_BY_USER, p.X(), v); // New coordinates for the point | |||
y[i] = v; // New coordinates for the curve | |||
brd.update(); | |||
}; | |||
} | |||
// Filled area. We need two additional points [start,0] and [end,0] | |||
points.push(brd.create('point', [end,0], {visible:false, name:'', fixed:true})); | |||
brd.create('polygon',points, {withLines:false,fillColor:'#e6f2fa'}); | |||
// Curve: | |||
brd.create('curve', [x,y], | |||
{strokeWidth:3, strokeColor:'#0077cc', | |||
highlightStrokeColor:'#0077cc'} | |||
); | |||
} | |||
doIt(); | |||
</source> | |||
[[Category:Examples]] | |||
[[Category:Charts]] |
Latest revision as of 13:12, 3 March 2021
By clicking on points one can set new values for the y-coordinates.
JavaScript code to produce this chart
var graph1;
var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-1,6,21,-1], axis: true});
function doIt() {
var i, x1, y1;
var p;
var points = [];
var x = [];
var y = [];
var start = 0;
var end = 20;
points.push(brd.create('point', [start,0], {visible:false, name:'', fixed:true}));
for (i=start;i<=end;i++) {
// Generate random coordinates
x1 = i;
y1 = Math.random()*4+1;
// Plot it
p = brd.create('point', [x1,y1],
{strokeWidth:2, strokeColor:'#ffffff',
highlightStrokeColor:'#0077cc', fillColor:'#0077cc',
highlightFillColor:'#0077cc', style:6, name:'', fixed:true}
);
points.push(p);
x.push(x1);
y.push(y1);
p.rendNode._num = i; // memorize the number of this point in the array
p.rendNode.onclick = function() {
var i = this._num; // Now we can access the number again
var p = points[i+1]; // The point number is one off
var v = prompt("New value:", p.Y())*1.0;
p.setPosition(JXG.COORDS_BY_USER, p.X(), v); // New coordinates for the point
y[i] = v; // New coordinates for the curve
brd.update();
};
}
// Filled area. We need two additional points [start,0] and [end,0]
points.push(brd.create('point', [end,0], {visible:false, name:'', fixed:true}));
brd.create('polygon',points, {withLines:false,fillColor:'#e6f2fa'});
// Curve:
brd.create('curve', [x,y],
{strokeWidth:3, strokeColor:'#0077cc',
highlightStrokeColor:'#0077cc'}
);
}
doIt();