<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example: Update Chart Axis</title>
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
<link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
<link rel="stylesheet" href="../assets/css/main.css">
<link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
<link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
<script src="../../build/yui/yui-min.js"></script>
</head>
<body>
<!--
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
-->
<div id="doc">
<div id="hd">
<h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
</div>
<h1>Example: Update Chart Axis</h1>
<div class="yui3-g">
<div class="yui3-u-3-4">
<div id="main">
<div class="content"><style scoped>
#mychart {
margin:10px 10px 10px 10px;
width:90%;
max-width: 800px;
height:400px;
}
.fields label {
font-weight:bold;
display:block;
float:left;
width:8em;
}
.fields {
border-top:1px solid #aaa;
padding:10px;
}
</style>
<div class="intro">
<p>This example shows how to access <code>Chart</code> instance's value axis after the <code>Chart</code> has rendered.</p>
</div>
<div class="example">
<div id="mychart"></div>
<form id="changeValue" class="fields" action="#">
<div class="body">
<p>
<label for="axisSelector">axis:</label>
<select name="axisSelector" id="axisSelector">
<option value="dateRange">dateRange</option>
<option value="financials">financials</option>
</select>
</p>
<p>
<label for="color">color:</label>
<input type="text" name="color" id="color" />
</p>
<p>
<label for="rotation">rotation:</label>
<input type="text" name="rotation" id="rotation" />
</p>
</div>
<div class="footer">
<p>
<button type="button" class="action" id="updateAxis">Update Axis</button>
</p>
</div>
</form>
<script type="text/javascript">
(function() {
YUI().use('escape', 'charts', function (Y)
{
//dataProvider source
var myDataValues = [
{date:"1/1/2010", miscellaneous:2000, expenses:3700, revenue:2200},
{date:"2/1/2010", miscellaneous:5000, expenses:9100, revenue:100},
{date:"3/1/2010", miscellaneous:4000, expenses:1900, revenue:1500},
{date:"4/1/2010", miscellaneous:3000, expenses:3900, revenue:2800},
{date:"5/1/2010", miscellaneous:500, expenses:7000, revenue:2650},
{date:"6/1/2010", miscellaneous:3000, expenses:4700, revenue:1200}
];
//Define our axes for the chart.
var myAxes = {
financials:{
keys:["miscellaneous", "revenue", "expenses"],
position:"right",
type:"numeric",
styles:{
majorTicks:{
display: "none"
}
}
},
dateRange:{
keys:["date"],
position:"bottom",
type:"category",
styles:{
majorTicks:{
display: "none"
},
label: {
rotation:-45,
margin:{top:5}
}
}
}
};
//instantiate the chart
var myChart = new Y.Chart({
type:"column",
categoryKey:"date",
dataProvider:myDataValues,
axes:myAxes,
horizontalGridlines: true,
verticalGridlines: true,
render:"#mychart"
});
//Click handler
Y.on("click", function(e) {
var axisName = Y.one("#axisSelector").get("value"),
rotation = parseFloat(Y.one("#rotation").get("value")),
color = Y.Escape.html(Y.one("#color").get("value")),
label = null,
axis;
if(axisName)
{
axis = myChart.getAxisByKey(axisName);
if(!isNaN(rotation))
{
label = {rotation:rotation};
}
if(color)
{
if(!label)
{
label = {};
}
label.color = color;
}
if(label)
{
axis.set("styles", {label:label});
}
}
}, "#updateAxis");
});
})();
</script>
</div>
<h3>Access and Update a <code>Chart</code> Instance's Axis.</h3>
<p>Often times, you will need to update a chart after it has been rendered. This example demonstrates how to access and update an axis. Specifically, we'll update the rotation and color of
the axis labels.</p>
<p>A <code>Chart</code> instance's axes can be accessed through the <code>getAxisByKey</code> method. This method takes the axis' key identifier as an argument. If you have explicitly set your
axis through the <code>axes</code> attribute, you will know the key identifier. If not, the default key identifier for the value axis is "values" and the default key identifier for the category
axis is <code>category</code>. Once you have a reference for the axis, you can update all of its public attributes.</p>
<h4>CSS</h4>
<pre class="code prettyprint">#mychart {
margin:10px 10px 10px 10px;
width:90%;
max-width: 800px;
height:400px;
}</pre>
<h4>HTML</h4>
<pre class="code prettyprint"><div id="mychart"></div></pre>
<h4>JavaScript</h4>
<pre class="code prettyprint">YUI().use('charts', function (Y)
{
//dataProvider source
var myDataValues = [
{date:"1/1/2010", miscellaneous:2000, expenses:3700, revenue:2200},
{date:"2/1/2010", miscellaneous:5000, expenses:9100, revenue:100},
{date:"3/1/2010", miscellaneous:4000, expenses:1900, revenue:1500},
{date:"4/1/2010", miscellaneous:3000, expenses:3900, revenue:2800},
{date:"5/1/2010", miscellaneous:500, expenses:7000, revenue:2650},
{date:"6/1/2010", miscellaneous:3000, expenses:4700, revenue:1200}
];
//Define our axes for the chart.
var myAxes = {
financials:{
keys:["miscellaneous", "revenue", "expenses"],
position:"right",
type:"numeric",
styles:{
majorTicks:{
display: "none"
}
}
},
dateRange:{
keys:["date"],
position:"bottom",
type:"category",
styles:{
majorTicks:{
display: "none"
},
label: {
rotation:-45,
margin:{top:5}
}
}
}
};
//instantiate the chart
var myChart = new Y.Chart({
type:"column",
categoryKey:"date",
dataProvider:myDataValues,
axes:myAxes,
horizontalGridlines: true,
verticalGridlines: true,
render:"#mychart"
});
//Click handler
Y.on("click", function(e) {
var axisName = Y.one("#axisSelector").get("value"),
rotation = parseFloat(Y.one("#rotation").get("value")),
color = Y.Escape.html(Y.one("#color").get("value")),
label = null,
axis;
if(axisName)
{
axis = myChart.getAxisByKey(axisName);
if(!isNaN(rotation))
{
label = {rotation:rotation};
}
if(color)
{
if(!label)
{
label = {};
}
label.color = color;
}
if(label)
{
axis.set("styles", {label:label});
}
}
}, "#updateAxis");
});</pre>
</div>
</div>
</div>
<div class="yui3-u-1-4">
<div class="sidebar">
<div class="sidebox">
<div class="hd">
<h2 class="no-toc">Examples</h2>
</div>
<div class="bd">
<ul class="examples">
<li data-description="Shows how to use Charts to create a basic chart.">
<a href="charts-simple.html">Basic Charts Implementation</a>
</li>
<li data-description="Shows how to create a chart with multiple series.">
<a href="charts-multiseries.html">Chart with Multiple Series</a>
</li>
<li data-description="Shows how to create a column chart with multiple series.">
<a href="charts-column.html">Specify Chart Type</a>
</li>
<li data-description="Shows how to create a column chart with a stacked numeric axis.">
<a href="charts-stackedcolumn.html">Create Stacked Chart</a>
</li>
<li data-description="Shows how to create a chart with a time axis.">
<a href="charts-timeaxis.html">Create a Chart with a Time Axis</a>
</li>
<li data-description="Shows how to add gridlines to a chart.">
<a href="charts-gridlines.html">Add Gridlines to a Chart</a>
</li>
<li data-description="Shows how to create a chart with planar based events.">
<a href="charts-stackedarea.html">Create a Stacked Area Chart with Planar Based Events</a>
</li>
<li data-description="Shows how to use a chart's styles attribute to customize a chart.">
<a href="charts-globalstyles.html">Customize a Chart</a>
</li>
<li data-description="Shows how to customize the default tooltip of a chart.">
<a href="charts-customizedtooltip.html">Customize a Chart's Tooltip</a>
</li>
<li data-description="Shows how to explicitly define the axes and series for a chart.">
<a href="charts-objectstyles.html">Define a Chart's Axes and Series</a>
</li>
<li data-description="Shows how to use charts to create a pie chart.">
<a href="charts-pie.html">Pie Chart</a>
</li>
<li data-description="Shows how to create a chart with multiple value axes.">
<a href="charts-dualaxes.html">Dual Axes Chart</a>
</li>
<li data-description="Shows how to access a chart instance's value axis after the chart has rendered.">
<a href="charts-axisupdate.html">Update Chart Axis</a>
</li>
<li data-description="Shows how to access a chart instance's seriesCollection after the chart has rendered.">
<a href="charts-seriesupdate.html">Update Chart Series</a>
</li>
<li data-description="Shows how to add a legend to a chart.">
<a href="charts-legend.html">Create Chart with a Legend</a>
</li>
<li data-description="Shows how to render multiple data points in a singe marker.">
<a href="charts-groupmarkers.html">Group Marker Chart</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="../assets/vendor/prettify/prettify-min.js"></script>
<script>prettyPrint();</script>
<script>
YUI.Env.Tests = {
examples: [],
project: '../assets',
assets: '../assets/charts',
name: 'charts-axisupdate',
title: 'Update Chart Axis',
newWindow: '',
auto: false
};
YUI.Env.Tests.examples.push('charts-simple');
YUI.Env.Tests.examples.push('charts-multiseries');
YUI.Env.Tests.examples.push('charts-column');
YUI.Env.Tests.examples.push('charts-stackedcolumn');
YUI.Env.Tests.examples.push('charts-timeaxis');
YUI.Env.Tests.examples.push('charts-gridlines');
YUI.Env.Tests.examples.push('charts-stackedarea');
YUI.Env.Tests.examples.push('charts-globalstyles');
YUI.Env.Tests.examples.push('charts-customizedtooltip');
YUI.Env.Tests.examples.push('charts-objectstyles');
YUI.Env.Tests.examples.push('charts-pie');
YUI.Env.Tests.examples.push('charts-dualaxes');
YUI.Env.Tests.examples.push('charts-axisupdate');
YUI.Env.Tests.examples.push('charts-seriesupdate');
YUI.Env.Tests.examples.push('charts-legend');
YUI.Env.Tests.examples.push('charts-groupmarkers');
</script>
<script src="../assets/yui/test-runner.js"></script>
</body>
</html>