jqwidgets-framework
Version:
jQWidgets is an advanced Angular, Vue, Blazor, React, Web Components, jquery, ASP .NET MVC, Custom Elements and HTML5 UI framework.
149 lines (126 loc) • 6.73 kB
HTML
<html lang="en">
<head>
<title id='Description'>JavaScript Chart logarithmic axis offset example</title>
<meta name="description" content="This is an example of JavaScript Chart logarithmic axis offset to value mapping." />
<meta name="keywords" content="jqwidgets charts, jquery charts, javascript charts, ajax charts, graphs, plots, line charts, bar charts, pie charts, javascript plots, ajax plots" />
<link rel="stylesheet" href="../../../jqwidgets/styles/jqx.base.css" type="text/css" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1 maximum-scale=1 minimum-scale=1" />
<script type="text/javascript" src="../../../scripts/jquery-1.12.4.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="../../../scripts/demos.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var sampleData = [
{ a: 1.1535, b: 0.5 },
{ a: 4.48, b: 20.5 },
{ a: 10, b: 60 },
{ a: 100, b: 80 },
{ a: 200, b: 90 },
{ a: 245.11, b: 100.13 },
{ a: 300.13, b: 150.13 },
{ a: 340, b: 200 }
];
var settings = {
title: "Logarithmic Scale Offset to Value Mappying",
description: "Move the mouse to see the respective x and y values",
padding: { left: 15, top: 5, right: 15, bottom: 5 },
titlePadding: { left: 0, top: 0, right: 0, bottom: 10 },
source: sampleData,
enableAnimations: true,
xAxis:
{
dataField: 'a',
logarithmicScale: true,
logarithmicScaleBase: 2,
valuesOnTicks: true
},
valueAxis: {
padding: { right: 0 },
flip: false,
logarithmicScale: true,
logarithmicScaleBase: 2,
title: { text: 'Value' },
labels: {
horizontalAlignment: 'right'
}
},
seriesGroups:
[
{
type: 'line',
radius: 200,
series: [
{ dataField: 'a', displayText: 'A', symbolType: 'square', symbolSize: 6, dashStyle: '4,4', lineWidth: 1 },
{ dataField: 'b', displayText: 'B', symbolType: 'circle', symbolSize: 6, lineWidth: 1 }
]
}
]
};
$('#chartContainer').jqxChart(settings);
var instance = $('#chartContainer').jqxChart('getInstance');
function cursorPositionRelativeToChart(event) {
// get the x/y coordinates of the mouse cursor relative to the chart element
var x = event.pageX || event.clientX || event.screenX;
var y = event.pageY || event.clientY || event.screenY;
var pos = $('#chartContainer').offset();
if (self._isTouchDevice) {
var cursorPos = $.jqx.position(event);
x = cursorPos.left;
y = cursorPos.top;
}
x -= pos.left;
y -= pos.top;
return { x: x, y: y };
}
var cursorRedDotElement = null;
$('#chartContainer').on('mousemove', function (event) {
var position = cursorPositionRelativeToChart(event);
// get the xAxis value
var xvalue = instance.getXAxisValue(position.x, 0);
// get the valueAxis value
var yvalue = instance.getValueAxisValue(position.y, 0);
// prepare event data text
var eventData = "x: " + position.x + "; y: " + position.y + "; xValue: " + xvalue + "; yValue: " + yvalue;
// display the event data text
$('#eventText').html(eventData);
// display a small dot at the cursor position
var renderer = instance.renderer;
if (cursorRedDotElement)
renderer.attr(cursorRedDotElement, { cx: position.x, cy: position.y });
else
cursorRedDotElement = renderer.circle(position.x, position.y, 1, { fill: 'red', stroke: 'red' });
});
// add click event handler
$('#chartContainer').on('click', function (event) {
var position = cursorPositionRelativeToChart(event);
// get the xAxis value
var xvalue = instance.getXAxisValue(position.x, 0);
// get the valueAxis value
var yvalue = instance.getValueAxisValue(position.y, 0);
// prepare event data text
var eventData = "x: " + position.x + "; y: " + position.y + "; xValue: " + xvalue + "; yValue: " + yvalue;
alert(eventData);
});
});
</script>
</head>
<body>
<div id='chartContainer' style="width:800px; height: 500px;"></div>
<br />
<div id='eventText' style="width:600px; height: 30px"></div>
<div class="example-description">
<br />
<h2>Description</h2>
<br />
This is an example of JavaScript Chart logarithmic axis offset to value mapping. You can see how to get the x/y coordinates of the mouse cursor relative to the chart element. You can also see how to get the xAxis and the valueAxis values and how to display a small dot at the cursor position.
</div>
<div style="position: absolute; bottom: 5px; right: 5px;">
<a href="https://www.jqwidgets.com/" alt="https://www.jqwidgets.com/"><img alt="https://www.jqwidgets.com/" title="https://www.jqwidgets.com/" src="https://www.jqwidgets.com/wp-content/design/i/logo-jqwidgets.png"/></a>
</div>
</body>
</html>