Browse Source

Merge pull request #340 from fabriziofortino/develop

graph3d: added support for custom axis ticks labels
v3_develop
Jos de Jong 10 years ago
parent
commit
6f9cfd58c5
3 changed files with 121 additions and 2 deletions
  1. +111
    -0
      examples/graph3d/example12_ticks.html
  2. +1
    -0
      examples/graph3d/index.html
  3. +9
    -2
      lib/graph3d/Graph3d.js

+ 111
- 0
examples/graph3d/example12_ticks.html View File

@ -0,0 +1,111 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Graph 3D Axis Ticks</title>
<style>
body {font: 10pt arial;}
</style>
<script type="text/javascript" src="../../dist/vis.js"></script>
<script type="text/javascript">
var data = null;
var graph = null;
function custom(x, y) {
return (-Math.sin(x/Math.PI) * Math.cos(y/Math.PI) * 10 + 10);
}
// Called when the Visualization API is loaded.
function drawVisualization() {
var style = document.getElementById('style').value;
var withValue = ['bar-color', 'bar-size', 'dot-size', 'dot-color'].indexOf(style) != -1;
// Create and populate a data table.
data = new vis.DataSet();
// create some nice looking data with sin/cos
var steps = 5; // number of datapoints will be steps*steps
var axisMax = 10;
var axisStep = axisMax / steps;
for (var x = 0; x <= axisMax; x+=axisStep) {
for (var y = 0; y <= axisMax; y+=axisStep) {
var z = custom(x,y);
if (withValue) {
var value = (y - x);
data.add({x:x, y:y, z: z, style:value});
}
else {
data.add({x:x, y:y, z: z});
}
}
}
// specify options
var options = {
width: '600px',
height: '600px',
style: style,
showPerspective: true,
showGrid: true,
showShadow: false,
// Option tooltip can be true, false, or a function returning a string with HTML contents
//tooltip: true,
tooltip: function (point) {
// parameter point contains properties x, y, z
return 'value: <b>' + point.z + '</b>';
},
xValueLabel: function(value) {
return vis.moment().add(value, 'days').format('DD MMM');
},
yValueLabel: function(value) {
return value * 10 + '%';
},
keepAspectRatio: true,
verticalRatio: 0.5
};
var camera = graph ? graph.getCameraPosition() : null;
// create our graph
var container = document.getElementById('mygraph');
graph = new vis.Graph3d(container, data, options);
if (camera) graph.setCameraPosition(camera); // restore camera position
document.getElementById('style').onchange = drawVisualization;
}
</script>
</head>
<body onload="drawVisualization()">
<p>
<label for="style"> Style:
<select id="style">
<option value="bar">bar</option>
<option value="bar-color">bar-color</option>
<option value="bar-size">bar-size</option>
<option value="dot">dot</option>
<option value="dot-line">dot-line</option>
<option value="dot-color">dot-color</option>
<option value="dot-size">dot-size</option>
<option value="grid">grid</option>
<option value="line">line</option>
<option value="surface">surface</option>
</select>
</label>
</p>
<div id="mygraph"></div>
<div id="info"></div>
</body>
</html>

+ 1
- 0
examples/graph3d/index.html View File

@ -18,6 +18,7 @@
<p><a href="example09_mobile.html">example09_mobile.html</a></p> <p><a href="example09_mobile.html">example09_mobile.html</a></p>
<p><a href="example10_styles.html">example10_styles.html</a></p> <p><a href="example10_styles.html">example10_styles.html</a></p>
<p><a href="example11_tooltips.html">example11_tooltips.html</a></p> <p><a href="example11_tooltips.html">example11_tooltips.html</a></p>
<p><a href="example12_ticks.html">example12_ticks.html</a></p>
<h1>Playground</h1> <h1>Playground</h1>
<p><a href="playground">Open the playground</a></p> <p><a href="playground">Open the playground</a></p>

+ 9
- 2
lib/graph3d/Graph3d.js View File

@ -36,6 +36,10 @@ function Graph3d(container, data, options) {
this.xLabel = 'x'; this.xLabel = 'x';
this.yLabel = 'y'; this.yLabel = 'y';
this.zLabel = 'z'; this.zLabel = 'z';
this.xValueLabel = function(v) { return v; };
this.yValueLabel = function(v) { return v; };
this.filterLabel = 'time'; this.filterLabel = 'time';
this.legendLabel = 'value'; this.legendLabel = 'value';
@ -829,6 +833,9 @@ Graph3d.prototype.setOptions = function (options) {
if (options.yLabel !== undefined) this.yLabel = options.yLabel; if (options.yLabel !== undefined) this.yLabel = options.yLabel;
if (options.zLabel !== undefined) this.zLabel = options.zLabel; if (options.zLabel !== undefined) this.zLabel = options.zLabel;
if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel;
if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel;
if (options.style !== undefined) { if (options.style !== undefined) {
var styleNumber = this._getStyleNumber(options.style); var styleNumber = this._getStyleNumber(options.style);
if (styleNumber !== -1) { if (styleNumber !== -1) {
@ -1179,7 +1186,7 @@ Graph3d.prototype._redrawAxis = function() {
ctx.textBaseline = 'middle'; ctx.textBaseline = 'middle';
} }
ctx.fillStyle = this.colorAxis; ctx.fillStyle = this.colorAxis;
ctx.fillText(' ' + step.getCurrent() + ' ', text.x, text.y);
ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y);
step.next(); step.next();
} }
@ -1236,7 +1243,7 @@ Graph3d.prototype._redrawAxis = function() {
ctx.textBaseline = 'middle'; ctx.textBaseline = 'middle';
} }
ctx.fillStyle = this.colorAxis; ctx.fillStyle = this.colorAxis;
ctx.fillText(' ' + step.getCurrent() + ' ', text.x, text.y);
ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y);
step.next(); step.next();
} }

Loading…
Cancel
Save