<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Visifire &#187; Development</title>
	<atom:link href="http://www.visifire.com/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.visifire.com/blog</link>
	<description>Fire up your imagination</description>
	<lastBuildDate>Wed, 25 Jan 2012 13:13:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Visifire 4.0 introduces Silverlight &amp; WPF Gauges</title>
		<link>http://www.visifire.com/blog/2011/02/08/visifire-4-0-introduces-silverlight-wpf-gauges/</link>
		<comments>http://www.visifire.com/blog/2011/02/08/visifire-4-0-introduces-silverlight-wpf-gauges/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 17:35:22 +0000</pubDate>
		<dc:creator>Chirag</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=1653</guid>
		<description><![CDATA[Hi, We are pleased to announce the release of Visifire 4.0 beta. As the title says Visifire adds Gauges to its quiver already filled with wide range of charts. Visifire supports Circular &#38; Linear Gauges. It also provides many ready-to-use templates to achieve the looks you need &#8211; Speedometer Chart, Dial Chart, Angular Gauge, Thermometer [...]]]></description>
			<content:encoded><![CDATA[<div>Hi,</p>
<p>We are pleased to announce the release of Visifire 4.0 beta. As the title says Visifire adds Gauges to its quiver already filled with <a href="http://www.visifire.com/visifire_features.php">wide range of charts</a>. Visifire supports Circular &amp; Linear Gauges. It also provides many ready-to-use templates to achieve the looks you need &#8211; Speedometer Chart, Dial Chart, Angular Gauge, Thermometer to name a few. Play around with the <a href="http://www.visifire.com/silverlight_wpf_charts_gauges_designer.php">Gauge Designer here</a> to try Gauges hands-on. Showcased below are some Silverlight Gauge samples.</p>
<p><div id="silverlightControlHost"><object data="data:application/x-silverlight," type="application/x-silverlight-2" width="670" height="300"><param name="source" value="http://www.visifire.com/blog/wp-content/post_xaps/GaugesSample.xap"/><param name="background" value="white" /><a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/></a></object><iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe></div><br /></p>
<p>Checkout wide range of gauges in the Gallery below:</p>
<ul>
<li><a href="http://visifire.com/silverlight_circular_gauges_gallery.php">Silverlight Circular Gauges Gallery</a></li>
<li><a href="http://visifire.com/silverlight_linear_gauges_gallery.php">Silverlight Linear Gauges Gallery</a></li>
</ul>
</div>
<div>
<p><a href="http://visifire.com/documentation/Visifire_Documentation/Gauges/Quick_Start/Silverlight/Your_First_Gauge.htm">Visit this post</a> to create your First Silverlight Gauge in minutes.</p>
<p><strong>Great news! All Enterprise Licensees will get Visifire Gauges at no charge.</strong></p>
<p><a href="http://www.visifire.com/download_silverlight_wpf_controls.php">Download Visifire 4.0 Trial here</a>. We are very excited about this release &amp; hope you like it. Let us know your feedback. We are all ears. Follow <a href="http://twitter.com/visifire">@visifire</a> for tips on Silverlight, WPF, WP7 Charts &amp; Gauges.</p>
<p>Cheers,<br />
Team Visifire</p>
</div>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Visifire 4.0 introduces Silverlight &#038; WPF Gauges" data-via="visifire" data-url="http://www.visifire.com/blog/2011/02/08/visifire-4-0-introduces-silverlight-wpf-gauges/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2011/02/08/visifire-4-0-introduces-silverlight-wpf-gauges/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Visifire Silverlight and WPF Charts 3.0.4 beta Released!</title>
		<link>http://www.visifire.com/blog/2010/02/26/visifire-silverlight-and-wpf-charts-3-0-4-beta-released/</link>
		<comments>http://www.visifire.com/blog/2010/02/26/visifire-silverlight-and-wpf-charts-3-0-4-beta-released/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 14:25:30 +0000</pubDate>
		<dc:creator>somnath</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=874</guid>
		<description><![CDATA[Hi, Today we are releasing the much awaited Zooming feature. In this version of Zooming you will be able to zoom/scale the PlotArea of the chart using ZoomBar. You can have a look at the example below. Please follow Visifire documentation here for more info. Also this release contains fix for the following bug: Pie [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Today we are releasing the much awaited Zooming feature. In this version of Zooming you will be able to zoom/scale the PlotArea of the chart using ZoomBar. You can have a look at the example below. Please follow Visifire documentation <a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Attribute_Reference/ZoomingEnabled.htm">here</a> for more info.</p>
<input id="gwProxy" type="hidden" />
<p><div id="silverlightControlHost"><object data="data:application/x-silverlight," type="application/x-silverlight-2" width="700" height="305"><param name="source" value="http://www.visifire.com/blog/wp-content/post_xaps/ZoomingRelease26_2_2010.xap"/><param name="background" value="white" /><a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/></a></object><iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe></div><br /></p>
<p>Also this release contains fix for the following bug:</p>
<ul>
<li>Pie chart was not behaving as expected if Exploded property was set at realtime.</li>
</ul>
<p>You can download Visifire v3.0.4 beta <a href="http://www.visifire.com/download_silverlight_charts.php">here</a>.</p>
<p>Cheers,<br />
Team Visifire</p>
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Visifire Silverlight and WPF Charts 3.0.4 beta Released!" data-via="visifire" data-url="http://www.visifire.com/blog/2010/02/26/visifire-silverlight-and-wpf-charts-3-0-4-beta-released/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2010/02/26/visifire-silverlight-and-wpf-charts-3-0-4-beta-released/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Step by step breakdown of Visifire rendering logic</title>
		<link>http://www.visifire.com/blog/2009/10/16/step-by-step-breakdown-of-visifire-rendering-logic/</link>
		<comments>http://www.visifire.com/blog/2009/10/16/step-by-step-breakdown-of-visifire-rendering-logic/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 12:03:00 +0000</pubDate>
		<dc:creator>Sunil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorials and Samples]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[Silverlight Charts]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=459</guid>
		<description><![CDATA[Introduction Since the release of Visifire, we have got a lot of positive response from users on the simplicity, looks, customizability of Visifire over other Charting Controls in the market. What made it possible is, Visifire’s underlying set of algorithms that determine the best Visualization for a given set of parameters. So even when you [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Since the release of Visifire, we have got a lot of positive response from users on the simplicity, looks, customizability of Visifire over other Charting Controls in the market. What made it possible is, Visifire’s underlying set of algorithms that determine the best Visualization for a given set of parameters. So even when you provide bare minimum data required for rendering, Visifire renders a nice looking Chart which has tooltips, default interactivity like explode in Pie Chart, auto font-color for labels depending on the Chart Background color, auto indexing of DataPoints when XValue is not provided, etc.</p>
<p>Though Visifire makes effort to find the best visualization for any given case, its not always enough for all the applications. So we do have relevant properties for making it possible to customize according to individual needs. In this blog am going to explain the default rendering behavior of Visifire and how one can override them according to his needs.</p>
<p><strong>1. Pictorial representation of Various elements/regions in a Chart</strong></p>
<p><strong></strong></p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img1.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Silverlight Chart Control" border="0" alt="Silverlight Chart Control" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img1_thumb.jpg" width="709" height="445" /></a></p>
<p><strong>2. A Minimal Chart</strong></p>
<p>Below is a Minimal Chart and the XAML required to create it.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Img2" border="0" alt="Img2" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img2_thumb.jpg" width="503" height="304" /></a></p>
<div class="csharpcode">
<pre class="alt">&lt;vc:Chart xmlns:vc=<span class="str">&quot;clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts&quot;</span></pre>
<pre>          Width=<span class="str">&quot;500&quot;</span> Height=<span class="str">&quot;300&quot;</span>&gt;            </pre>
<pre class="alt">    &lt;vc:Chart.Series&gt;</pre>
<pre>&#160;</pre>
<pre class="alt">        &lt;vc:DataSeries&gt;</pre>
<pre>            &lt;vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">                &lt;vc:DataPoint YValue=<span class="str">&quot;207349&quot;</span> /&gt;</pre>
<pre>                &lt;vc:DataPoint YValue=<span class="str">&quot;274316&quot;</span> /&gt;</pre>
<pre class="alt">                &lt;vc:DataPoint YValue=<span class="str">&quot;318845&quot;</span> /&gt;</pre>
<pre>                &lt;vc:DataPoint YValue=<span class="str">&quot;345254&quot;</span> /&gt;</pre>
<pre class="alt">                &lt;vc:DataPoint YValue=<span class="str">&quot;351139&quot;</span> /&gt;</pre>
<pre>            &lt;/vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">        &lt;/vc:DataSeries&gt;</pre>
<pre>&#160;</pre>
<pre class="alt">    &lt;/vc:Chart.Series&gt;</pre>
<pre>&lt;/vc:Chart&gt;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p>In the above XML we have defined YValue for all the DataPoints. When we look at the rendered chart, we can observe that the DataPoints have been numbered from 1 to 5. DataPoints are numbered automatically in the order of their appearance. If you want to override this default behavior, you can either set XValue for numbers or AxisXLabel in case you want to display string. Note that setting XValue will place DataPoints according to the position of XValue on X-Axis. Chart also shows ToolTip by default.</p>
<p>So by default the Chart adds</p>
<ol>
<li>XValue &#8211; index values </li>
<li>ToolTip </li>
<li>Comma for every thousandth digit on YAxis </li>
</ol>
<p><strong>3. Customizing Visifire</strong></p>
<p>Chart in the previous section is Minimal in the sense we have not set any property required to customize the Chart. Below are few of the common stuff that you might want to add to the Chart.</p>
<ol>
<li><a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Chart_Elements_Reference/Title.htm">Title</a> </li>
<li><a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Attribute_Reference/XValue.htm">XValue</a>/<a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Attribute_Reference/AxisXLabel.htm">AxisXLabel</a> for each DataPoint </li>
<li><a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Attribute_Reference/Prefix.htm">Prefix</a> a symbol to the labels on YAxis &#8211; $ for example to make Label to look like $50,000 </li>
<li>Customize Values shown in the <a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Chart_Elements_Reference/ToolTip.htm">Tooltip</a> </li>
</ol>
<p>Below is how the Chart looks after customization</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img3.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img3" border="0" alt="Img3" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img3_thumb.jpg" width="506" height="306" /></a></p>
<div class="csharpcode">
<pre class="alt">&lt;vc:Chart xmlns:vc=<span class="str">&quot;clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts&quot;</span></pre>
<pre>           Width=<span class="str">&quot;500&quot;</span> Height=<span class="str">&quot;300&quot;</span>&gt;</pre>
<pre class="alt">     </pre>
<pre>     &lt;vc:Chart.Titles&gt;</pre>
<pre class="alt">         &lt;vc:Title Text=<span class="str">&quot;Product Sales by Month&quot;</span>&gt;&lt;/vc:Title&gt;    </pre>
<pre>     &lt;/vc:Chart.Titles&gt;</pre>
<pre class="alt">     </pre>
<pre>     &lt;vc:Chart.AxesY&gt;</pre>
<pre class="alt">         &lt;vc:Axis Prefix=<span class="str">&quot;$&quot;</span>&gt;&lt;/vc:Axis&gt;</pre>
<pre>     &lt;/vc:Chart.AxesY&gt;</pre>
<pre class="alt">     </pre>
<pre>     &lt;vc:Chart.Series&gt;</pre>
<pre class="alt">         &lt;vc:DataSeries ToolTipText=<span class="str">&quot;#AxisXLabel, Y = #YValue&quot;</span>&gt;</pre>
<pre>             &lt;vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">                 &lt;vc:DataPoint AxisXLabel=<span class="str">&quot;Jan&quot;</span> YValue=<span class="str">&quot;207349&quot;</span> /&gt;</pre>
<pre>                 &lt;vc:DataPoint AxisXLabel=<span class="str">&quot;Feb&quot;</span> YValue=<span class="str">&quot;274316&quot;</span> /&gt;</pre>
<pre class="alt">                 &lt;vc:DataPoint AxisXLabel=<span class="str">&quot;Mar&quot;</span> YValue=<span class="str">&quot;318845&quot;</span> /&gt;</pre>
<pre>                 &lt;vc:DataPoint AxisXLabel=<span class="str">&quot;Apr&quot;</span> YValue=<span class="str">&quot;345254&quot;</span> /&gt;</pre>
<pre class="alt">                 &lt;vc:DataPoint AxisXLabel=<span class="str">&quot;May&quot;</span> YValue=<span class="str">&quot;351139&quot;</span> /&gt;</pre>
<pre>             &lt;/vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">         &lt;/vc:DataSeries&gt;</pre>
<pre>     &lt;/vc:Chart.Series&gt;</pre>
<pre class="alt"> &lt;/vc:Chart&gt;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>In the above example I&#8217;ve used AxisXLabel, as the Labels on the XAxis are strings. If the values are numeric, then you can use XValue. In case you set both the properties, then the DataPoints are placed according to XValue and XValues are replaced by AxisXLabels wherever available. Below is an example.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img4.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img4" border="0" alt="Img4" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img4_thumb.jpg" width="505" height="305" /></a></p>
<p><strong></strong></p>
<p><strong></strong></p>
<div class="csharpcode">
<pre class="alt">&lt;vc:Chart xmlns:vc=<span class="str">&quot;clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts&quot;</span></pre>
<pre>          Width=<span class="str">&quot;500&quot;</span> Height=<span class="str">&quot;300&quot;</span>&gt;</pre>
<pre class="alt">    </pre>
<pre>    &lt;vc:Chart.Series&gt;</pre>
<pre class="alt">        &lt;vc:DataSeries ToolTipText=<span class="str">&quot;#AxisXLabel, Y = #YValue&quot;</span>&gt;</pre>
<pre>            &lt;vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">                &lt;vc:DataPoint XValue=<span class="str">&quot;1&quot;</span> YValue=<span class="str">&quot;207349&quot;</span> /&gt;</pre>
<pre>                &lt;vc:DataPoint XValue=<span class="str">&quot;3&quot;</span> YValue=<span class="str">&quot;274316&quot;</span> /&gt;</pre>
<pre class="alt">                &lt;vc:DataPoint XValue=<span class="str">&quot;4&quot;</span> YValue=<span class="str">&quot;318845&quot;</span> /&gt;</pre>
<pre>                &lt;vc:DataPoint XValue=<span class="str">&quot;5&quot;</span> AxisXLabel=<span class="str">&quot;Five&quot;</span> YValue=<span class="str">&quot;345254&quot;</span> /&gt;</pre>
<pre class="alt">                &lt;vc:DataPoint XValue=<span class="str">&quot;6&quot;</span> YValue=<span class="str">&quot;351139&quot;</span> /&gt;</pre>
<pre>            &lt;/vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">        &lt;/vc:DataSeries&gt;                </pre>
<pre>    &lt;/vc:Chart.Series&gt;</pre>
<pre class="alt">&#160;</pre>
<pre>&lt;/vc:Chart&gt;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p><strong>4. How the PlotArea width is calculated and how to control it</strong></p>
<p>While allocating region for various elements in the Chart, PlotArea viewport width is determined at the end after allocating region for Title, Legend, AxisX, AxisY. So for example, if we place Legend to the right, then the viewport size reduces depending on the Legend Size. Below is an illustration.</p>
<p><strong><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img5.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img5" border="0" alt="Img5" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img5_thumb.jpg" width="503" height="303" /></a> </strong></p>
<p>You can see that the PlotArea &quot;Viewport&quot; width has reduced because of the Legend. But at the same time, the Actual PlotArea Size can extend further resulting in a ScrollBar. This can happen whenever ScrollingEnabled is set to true.</p>
<p>Through some trials, we have determined the relation between the DataPoint Width and Chart Size which makes the Chart to look good/readable and accordingly we are setting the PlotArea Width. Below is the algorithm.</p>
<p>If, <strong>( Max Difference of XValues / Min Difference of XValues ) &gt; MagicNumber</strong>, that means PlotArea width needs to be more than that of the viewport width &#8211; which results in ScrollBar. We found the equation for MagicNumber through trials with varying chart sizes and varying number of DataPoints. Below is how we calculate it.</p>
<p><strong>MagicNumber = Current PlotArea width * 35 / 550 </strong></p>
<p><strong></strong></p>
<p>Now, PlotArea width can be calculated as below.</p>
<p><strong>PlotArea width = ( Max Difference of XValues / Min Difference of XValues ) * 550 / 34</strong></p>
<p><strong></strong></p>
<p>For multi series Column and Bar Charts, we need to multiply 550 with appropriate number of series that get rendered side by side.</p>
<p><strong>5. How Datapoint width is calculated and how to control it</strong></p>
<p>In case of Column and Bar Charts, DataPointWidth is determined based on the two closest DataPoints. Say, the XValues of 4 DataPoints are {1, 4, 5, 7, 9}, then the closest two DataPoints are 2nd and 3rd with difference in XValue of 1. So, in order to be able to draw both the DataPoints without overlap, we need to divide the available space between the two. As a result of which, Maximum Width of DataPoints will be equal to the minimum difference between XValues.</p>
<p>Now, we also need to give some spacing between the two DataPoints which is determined as .1 * ( Minimum Difference of XValues ). So, the DataPoint width finally comes down to .9 * ( Minimum Difference of XValues ) . In case the Chart is MultiSeries, then we need to place multiple columns within the same region. So, the column width calculated as above is divided by the number of series needed to be drawn.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img6.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Img6" border="0" alt="Img6" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img6_thumb.jpg" width="506" height="306" /></a></p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img7.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img7" border="0" alt="Img7" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img7_thumb.jpg" width="506" height="305" /></a></p>
<p>In certain cases, the calculated width can go below 1px which will make Columns invisible. So, Visifire sets a lower limit of 2px to DataPoint width. You can also control the width of DataPoint by setting DataPointWidth property as a percentage of PlotArea ViewPort width. For example, setting the DataPointWidth to 5 will result in a Chart as below.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img8.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img8" border="0" alt="Img8" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img8_thumb.jpg" width="505" height="305" /></a></p>
<p>Please note that increasing/decreasing the Width of DataPoints will not change the relative position of DataPoints. So, if you increase the DataPointWidth over a certain range, columns will actually overlap. In the next section I&#8217;ll explain how you can overcome this limitation.</p>
<p><strong>6. How Axis, Interval and AxisLabels work</strong></p>
<p>Whenever you create a chart, by default Visifire tries to calculate the best possible Range and interval for Axis so that it is easier for the Humans to grasp/read. Human readable in the sense, it tries to make the interval a multiple of 1,2,5 or 10 and tries to keep the number of intervals around 8. So, whenever the interval is not 1, it might skip some of the AxisXLabel if you have defined.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img10.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img10" border="0" alt="Img10" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img10_thumb.jpg" width="504" height="306" /></a></p>
<div class="csharpcode">
<pre class="alt">&lt;vc:DataSeries.DataPoints&gt;</pre>
<pre>     &lt;vc:DataPoint XValue=<span class="str">&quot;1&quot;</span> YValue=<span class="str">&quot;207349&quot;</span> /&gt;</pre>
<pre class="alt">     &lt;vc:DataPoint XValue=<span class="str">&quot;3&quot;</span> YValue=<span class="str">&quot;274316&quot;</span> /&gt;</pre>
<pre>     &lt;vc:DataPoint XValue=<span class="str">&quot;4&quot;</span> AxisXLabel=<span class="str">&quot;Four&quot;</span> YValue=<span class="str">&quot;318845&quot;</span> /&gt;</pre>
<pre class="alt">     &lt;vc:DataPoint XValue=<span class="str">&quot;5&quot;</span> YValue=<span class="str">&quot;345254&quot;</span> /&gt;</pre>
<pre>     &lt;vc:DataPoint XValue=<span class="str">&quot;6&quot;</span> YValue=<span class="str">&quot;351139&quot;</span> /&gt;</pre>
<pre class="alt">     &lt;vc:DataPoint XValue=<span class="str">&quot;7&quot;</span> YValue=<span class="str">&quot;217349&quot;</span> /&gt;</pre>
<pre>     &lt;vc:DataPoint XValue=<span class="str">&quot;9&quot;</span> YValue=<span class="str">&quot;224316&quot;</span> /&gt;</pre>
<pre class="alt">     &lt;vc:DataPoint XValue=<span class="str">&quot;10&quot;</span> YValue=<span class="str">&quot;298845&quot;</span> /&gt;</pre>
<pre>     &lt;vc:DataPoint XValue=<span class="str">&quot;11&quot;</span> YValue=<span class="str">&quot;335254&quot;</span> /&gt;</pre>
<pre class="alt">     &lt;vc:DataPoint XValue=<span class="str">&quot;13&quot;</span> YValue=<span class="str">&quot;371139&quot;</span> /&gt;</pre>
<pre> &lt;/vc:DataSeries.DataPoints&gt;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Note that I&#8217;ve skipped all other elements apart from DataPoints collection just to keep the xaml compact. In the above example you can see that the interval is 2. So, if in case you set AxisXLabel for 3rd DataPoint, then it&#8217;ll not be shown. You can override this default behavior by setting the interval property of Axis to 1 as shown below.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img11.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img11" border="0" alt="Img11" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img11_thumb.jpg" width="505" height="306" /></a></p>
<div class="csharpcode">
<pre class="alt">&lt;vc:Chart.AxesX&gt;</pre>
<pre>    &lt;vc:Axis Interval=<span class="str">&quot;1&quot;</span>&gt;&lt;/vc:Axis&gt;</pre>
<pre class="alt">&lt;/vc:Chart.AxesX&gt;</pre>
<pre>&#160;</pre>
<pre class="alt">&lt;vc:Chart.Series&gt;</pre>
<pre>    &lt;vc:DataSeries ToolTipText=<span class="str">&quot;#AxisXLabel, Y = #YValue&quot;</span>&gt;</pre>
<pre class="alt">        &lt;vc:DataSeries.DataPoints&gt;</pre>
<pre>            &lt;vc:DataPoint XValue=<span class="str">&quot;1&quot;</span> YValue=<span class="str">&quot;207349&quot;</span> /&gt;</pre>
<pre class="alt">            &lt;vc:DataPoint XValue=<span class="str">&quot;3&quot;</span> YValue=<span class="str">&quot;274316&quot;</span> /&gt;</pre>
<pre>            &lt;vc:DataPoint XValue=<span class="str">&quot;4&quot;</span> AxisXLabel=<span class="str">&quot;Four&quot;</span> YValue=<span class="str">&quot;318845&quot;</span> /&gt;</pre>
<pre class="alt">            &lt;vc:DataPoint XValue=<span class="str">&quot;5&quot;</span> YValue=<span class="str">&quot;345254&quot;</span> /&gt;</pre>
<pre>            &lt;vc:DataPoint XValue=<span class="str">&quot;6&quot;</span> YValue=<span class="str">&quot;351139&quot;</span> /&gt;</pre>
<pre class="alt">            &lt;vc:DataPoint XValue=<span class="str">&quot;7&quot;</span> YValue=<span class="str">&quot;217349&quot;</span> /&gt;</pre>
<pre>            &lt;vc:DataPoint XValue=<span class="str">&quot;9&quot;</span> YValue=<span class="str">&quot;224316&quot;</span> /&gt;</pre>
<pre class="alt">            &lt;vc:DataPoint XValue=<span class="str">&quot;10&quot;</span> YValue=<span class="str">&quot;298845&quot;</span> /&gt;</pre>
<pre>            &lt;vc:DataPoint XValue=<span class="str">&quot;11&quot;</span> YValue=<span class="str">&quot;335254&quot;</span> /&gt;</pre>
<pre class="alt">            &lt;vc:DataPoint XValue=<span class="str">&quot;13&quot;</span> YValue=<span class="str">&quot;371139&quot;</span> /&gt;</pre>
<pre>        &lt;/vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">    &lt;/vc:DataSeries&gt;          </pre>
<pre>&lt;/vc:Chart.Series&gt;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>While rendering the Axis, Visifire tries to automatically place AxisLabels in such a way that they don&#8217;t overlap. Say, if we change the AxisXLabel from &quot;Four&quot; to &quot;XValue is Four&quot;, then it is obvious that the Label is long and it&#8217;ll overlap the neighboring AxisLabels. So, Visifire starts showing labels in 2 rows as shown below.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img12.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img12" border="0" alt="Img12" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img12_thumb.jpg" width="504" height="305" /></a></p>
<p>Now if we further increase the AxisXLabel to &quot;DataPoint XValue is Four&quot;, then it becomes difficult to show Labels in two rows. So the next alternative will be to rotate the AxisLabel so that it doesn&#8217;t overlap the neighboring AxisXLabels.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img13.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img13" border="0" alt="Img13" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img13_thumb.jpg" width="503" height="305" /></a></p>
<p>You can customize Axis by setting Interval, MinimumValue, MaximumValue, etc as mentioned in the following <a href="http://www.visifire.com/documentation/Visifire_Documentation/Reference/Chart_Elements_Reference/Axis.htm">document</a>.</p>
<p><strong>7. How Labels are placed</strong></p>
<p>Below is an image showing Labels in Visifire. In order to show Label, one needs to enable them by setting LabelEnabled to True in DataSeries.</p>
<p><a href="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img14.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Img14" border="0" alt="Img14" src="http://visifire.com/blog/wp-content/post_images/StepbystepbreakdownofVisifirerenderinglo_D34F/Img14_thumb.jpg" width="505" height="304" /></a></p>
<div class="csharpcode">
<pre class="alt">&lt;vc:DataSeries LabelEnabled=<span class="str">&quot;True&quot;</span> ToolTipText=<span class="str">&quot;#AxisXLabel, Y = #YValue&quot;</span>&gt;</pre>
<pre>    &lt;vc:DataSeries.DataPoints&gt;</pre>
<pre class="alt">        &lt;vc:DataPoint YValue=<span class="str">&quot;207349&quot;</span> /&gt;</pre>
<pre>        &lt;vc:DataPoint YValue=<span class="str">&quot;274316&quot;</span> /&gt;</pre>
<pre class="alt">        &lt;vc:DataPoint YValue=<span class="str">&quot;318845&quot;</span> /&gt;</pre>
<pre>        &lt;vc:DataPoint LabelText=<span class="str">&quot;Label&quot;</span> YValue=<span class="str">&quot;345254&quot;</span> /&gt;</pre>
<pre class="alt">        &lt;vc:DataPoint YValue=<span class="str">&quot;351139&quot;</span> /&gt;</pre>
<pre>        &lt;vc:DataPoint YValue=<span class="str">&quot;217349&quot;</span> /&gt;</pre>
<pre class="alt">        &lt;vc:DataPoint YValue=<span class="str">&quot;224316&quot;</span> /&gt;</pre>
<pre>        &lt;vc:DataPoint YValue=<span class="str">&quot;298845&quot;</span> /&gt;</pre>
<pre class="alt">        &lt;vc:DataPoint YValue=<span class="str">&quot;335254&quot;</span> /&gt;</pre>
<pre>        &lt;vc:DataPoint YValue=<span class="str">&quot;371139&quot;</span> /&gt;                           </pre>
<pre class="alt">    &lt;/vc:DataSeries.DataPoints&gt;</pre>
<pre>&lt;/vc:DataSeries&gt;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>See that Labels and AxisLabels are different. AxisLabel is one which is shown below the Axis and Labels are shows on/above the DataPoints.</p>
<p>You can observe that few of the Labels are outside the DataPoint and few are inside. Few have Black font color and few have White. Though the placement seems random at first place, it is not. Below I&#8217;ll explain the flow.</p>
<p>While placing Label for a DataPoint, Visifire first tries to place it horizonatally outside DataPoint. If the DataPoint width is more than the Label&#8217;s width, then Label is placed horizontally as in case of 4th DataPoint. If the DataPoint width is less than that of Label&#8217;s, then the Label is placed vertically. Now, whether the Label is placed on top of columns or inside the columns is determined by the availability of space outside the Column. If there is enough space outside the column, then the Labels are placed outside of DataPoint. If not, then the Labels are placed inside DataPoint.</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Step by step breakdown of Visifire rendering logic" data-via="visifire" data-url="http://www.visifire.com/blog/2009/10/16/step-by-step-breakdown-of-visifire-rendering-logic/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2009/10/16/step-by-step-breakdown-of-visifire-rendering-logic/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Visifire 2.2.3 beta 5 Released</title>
		<link>http://www.visifire.com/blog/2009/07/03/visifire-223-beta-5-released/</link>
		<comments>http://www.visifire.com/blog/2009/07/03/visifire-223-beta-5-released/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 15:04:32 +0000</pubDate>
		<dc:creator>somnath</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/2009/07/03/visifire-223-beta-5-released/</guid>
		<description><![CDATA[Hi, This release contains fix for the following bugs: In Line Chart, if LightingEnabled property was set to true in DataSeries then lighting was not applied over the symbol of line shown in Legend. In CandleStick multiseries Chart, color of the symbol displayed in legend was not as same as PriceUpColor defined in DataSeries. StreamLineFunnel [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,
<p>This release contains fix for the following bugs:</p>
<ul>
<li>In Line Chart, if LightingEnabled property was set to true in DataSeries then lighting was not applied over the symbol of line shown in Legend.</li>
<li>In CandleStick multiseries Chart, color of the symbol displayed in legend was not as same as PriceUpColor defined in DataSeries.</li>
<li>StreamLineFunnel and SectionFunnel Chart threw exception if YValue property was set to true for all DataPoints. </li>
</ul>
<p>Current release also contains the following enhancements:</p>
<ul>
<li>Shadow can be applied to CandleStick and Stock Chart by setting the ShadowEnabled Property to true in DataSeries/DataPoint.</li>
<li>In CandleStick Chart, if PriceUpColor is not defined then default color for PriceUpColor will be applied from the default ColorSet named CandleLight.</li>
</ul>
<p>Download Visifire v2.2.3 beta 5 <a href="http://www.visifire.com/download_silverlight_charts.php">here</a>.
<p>Cheers,<br />Team Visifire</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Visifire 2.2.3 beta 5 Released" data-via="visifire" data-url="http://www.visifire.com/blog/2009/07/03/visifire-223-beta-5-released/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2009/07/03/visifire-223-beta-5-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visifire 2.2.3 beta 4 Released</title>
		<link>http://www.visifire.com/blog/2009/06/26/visifire-223-beta-4-released/</link>
		<comments>http://www.visifire.com/blog/2009/06/26/visifire-223-beta-4-released/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 14:09:02 +0000</pubDate>
		<dc:creator>somnath</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=410</guid>
		<description><![CDATA[Hi, This release contains fix for the following bugs: In a Line chart if MovingMarkerEnabled property was set to true for a DataSeries, moving-marker was visible over the first DataPoint. Instead it should be visible only if mouse enters inside the PlotArea. Axis was misaligned in a chart with very less height if Title property [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,
<p>This release contains fix for the following bugs:
<ul>
<li>In a Line chart if MovingMarkerEnabled property was set to true for a DataSeries, moving-marker was visible over the first DataPoint. Instead it should be visible only if mouse enters inside the PlotArea.</li>
<li>Axis was misaligned in a chart with very less height if Title property was set for it.</li>
</ul>
<p>Download Visifire v2.2.3 beta 4 <a href="http://www.visifire.com/download_silverlight_charts.php">here</a>.</p>
<p>Cheers,<br />Team Visifire</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Visifire 2.2.3 beta 4 Released" data-via="visifire" data-url="http://www.visifire.com/blog/2009/06/26/visifire-223-beta-4-released/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2009/06/26/visifire-223-beta-4-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drilldown Silverlight Charts using Visifire</title>
		<link>http://www.visifire.com/blog/2009/03/05/drilldown-silverlight-charts-using-visifire/</link>
		<comments>http://www.visifire.com/blog/2009/03/05/drilldown-silverlight-charts-using-visifire/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 10:24:25 +0000</pubDate>
		<dc:creator>Chirag</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorials and Samples]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=258</guid>
		<description><![CDATA[Creating Drilldown chart is a common requirement in any RIA dashboard. Drilldown charts give rich user experience. In this blog let’s see how we can create drilldown charts using Visifire. In this sample application, chart can be drilled down till 2 levels. The default chart would show yearly sales of a fictitious company for the [...]]]></description>
			<content:encoded><![CDATA[<p>Creating Drilldown chart is a common requirement in any RIA dashboard. Drilldown charts give rich user experience. In this blog let’s see how we can create drilldown charts using Visifire.</p>
<p>In this sample application, chart can be drilled down till 2 levels. The default chart would show <strong>yearly sales</strong> of a fictitious company for the period 2006-2008. On click of column representing the sales for an year, <strong>monthly sales for that year</strong> is shown up. Further it can be drilled down to find <strong>product wise sales for the selected month</strong>.</p>
<p>This sample uses Javascript API to generate charts. The complete application can be downloaded from <a href="http://www.visifire.com/downloads/samples/embedded/drilldown_sample_05032009/drilldown_sample_05032009.zip">here</a>. The code is completely commented &amp; explained wherever necessary. Refer the rest of the blog if you need more help.</p>
<p><a title="Silverlight Drilldown Chart" href="http://www.visifire.com/downloads/samples/embedded/drilldown_sample_05032009/demo/drilldown.html"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="Click to see the sample in action" src="http://www.visifire.com/blog/wp-content/post_images/DrilldownSilverlightChartsusingVisifire_D0CF/image.png" border="0" alt="Click to see the sample in action" width="689" height="633" /></a></p>
<p>Data can be pulled in from any data source. To keep the example simple let’s store the sales data in an array.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">var sales;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000">// Create array for the Sales data</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">sales = [{year: 2006, month: <span style="color: #006080">"Jan"</span>, ProductX: 20000, ProductY: 25000, ProductZ: 15000},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">         {year: 2006, month: <span style="color: #006080">"Feb"</span>, ProductX: 10000, ProductY: 23000, ProductZ: 25000},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">         {year: 2006, month: <span style="color: #006080">"Mar"</span>, ProductX: 22000, ProductY: 38000, ProductZ: 83000},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">         {year: 2006, month: <span style="color: #006080">"Apr"</span>, ProductX: 23456, ProductY: 32435, ProductZ: 24223},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">         {year: 2006, month: <span style="color: #006080">"May"</span>, ProductX: 25142, ProductY: 32415, ProductZ: 10923},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">         {year: 2006, month: <span style="color: #006080">"Jun"</span>, ProductX: 18254, ProductY: 15342, ProductZ: 10934},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">         {year: 2006, month: <span style="color: #006080">"Jul"</span>, ProductX: 18562, ProductY: 19832, ProductZ: 10293},</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">         {year: 2006, month: <span style="color: #006080">"Aug"</span>, ProductX: 28376, ProductY: ..............</pre>
</div>
</div>
<p>Construct the XML string from the data stored in the array.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">function getYearlySales()</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">{</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    isChart1Added = <span style="color: #0000ff">true</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    var myXAML;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    <span style="color: #008000">// Constructing Data XAML</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = <span style="color: #006080">'&lt;vc:Chart Theme="Theme2" Width="650" Height="450" ColorSet="Visifire1" Background="Black" xmlns:vc="clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts" &gt;'</span> + <span style="color: #006080">"\n"</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Chart.Titles&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Title Text= "Yearly Sales" /&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:Chart.Titles&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Chart.PlotArea&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:PlotArea Background= "#0A0A0A" /&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:Chart.PlotArea&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Chart.AxesX&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Axis Title="Year" /&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:Chart.AxesX&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Chart.AxesY&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Axis Title="Amount" Prefix="$" /&gt;'</span> + <span style="color: #006080">"\n"</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:Chart.AxesY&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:Chart.Series&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:DataSeries RenderAs="Column"&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:DataSeries.DataPoints&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    sales.sort(sortByYear);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    var totalSales = 0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    currYear = sales[0].year;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    <span style="color: #0000ff">for</span> (var arrayIndex = 0; arrayIndex &lt; sales.length; arrayIndex++)</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">    {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">        <span style="color: #0000ff">if</span>(sales[arrayIndex].year == currYear)</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">        {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">            currYear = sales[arrayIndex].year;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">            totalSales += sales[arrayIndex].ProductX + sales[arrayIndex].ProductY + sales[arrayIndex].ProductZ;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">        }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">        <span style="color: #0000ff">else</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">        {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">            myXAML = myXAML + <span style="color: #006080">'&lt;vc:DataPoint AxisXLabel="'</span> + currYear + <span style="color: #006080">'" YValue="'</span> + totalSales + <span style="color: #006080">'"/&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">            totalSales = 0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">            currYear++;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">        }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;vc:DataPoint AxisXLabel="'</span> + currYear + <span style="color: #006080">'" YValue="'</span> + totalSales + <span style="color: #006080">'"/&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:DataSeries.DataPoints&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">"\n"</span> + <span style="color: #006080">'&lt;/vc:DataSeries&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:Chart.Series&gt;'</span> + <span style="color: #006080">"\n"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    myXAML = myXAML + <span style="color: #006080">'&lt;/vc:Chart&gt;'</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    <span style="color: #0000ff">return</span> myXAML;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">}</pre>
</div>
</div>
<p>First, create the chart for yearly sales. Next, attach an event handler for “MouseLeftButtonUp” event to the DataSeries. On fire of this event, this chart is replaced with a chart with monthly sales for the year represented by the selected DataPoint in that DataSeries. Event handler can be attached as shown in the code snippet below.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000">// Attaching event handler for MouseLeftButtonUp event</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">vChart1.preLoad = function(args) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    chart1 = args[0];</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">    chart1.Series[0].MouseLeftButtonUp = function(e) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">        onMouseUpMonthlySales(e.AxisXLabel); <span style="color: #008000">//Calling the function to replace the chart</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">    };</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">};</pre>
</div>
</div>
<p>Use the same logic to replace this chart with a chart with product wise sales for the selected month. The crux of a drilldown chart is to attach an event handler to update the chart on fire of some event. I think we have accomplished the same swiftly in this sample. A link/button to return back to the previous state of the chart would give a holistic user experience.</p>
<p>You can see the sample in action <a href="http://www.visifire.com/downloads/samples/embedded/drilldown_sample_05032009/demo/drilldown.html">here</a>. The complete solution can be downloaded from <a href="http://www.visifire.com/downloads/samples/embedded/drilldown_sample_05032009/drilldown_sample_05032009.zip">here</a>.</p>
<p>Cheers,</p>
<p>Team Visifire.</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Drilldown Silverlight Charts using Visifire" data-via="visifire" data-url="http://www.visifire.com/blog/2009/03/05/drilldown-silverlight-charts-using-visifire/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2009/03/05/drilldown-silverlight-charts-using-visifire/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Visifire 2.0 beta Released!</title>
		<link>http://www.visifire.com/blog/2008/11/21/visifire-20-beta-release/</link>
		<comments>http://www.visifire.com/blog/2008/11/21/visifire-20-beta-release/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 13:36:19 +0000</pubDate>
		<dc:creator>Chirag</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=71</guid>
		<description><![CDATA[Hi, The wait is over. Visifire 2.0 beta is here! Visifire 2.0 is a complete rewrite of Visifire 1.x, it is a result of complete architectural overhaul. We had to make changes in the XAML structure. The XAML used by Visifire 1.x is incompatible with Visifire 2.0. A notable change in XAML is that similar [...]]]></description>
			<content:encoded><![CDATA[<p style="11pt;">Hi,</p>
<p style="11pt;">
<p style="11pt;">
<p style="11pt;">The wait is over. Visifire 2.0 beta is here! Visifire 2.0 is a complete rewrite of Visifire 1.x, it is a result of complete architectural overhaul. We had to make changes in the XAML structure. The XAML used by Visifire 1.x is incompatible with Visifire 2.0. A notable change in XAML is that similar elements are grouped under an element collection. Visifire 2.0 follows the best practices laid down by Microsoft for component development. In Visifire 2.0 all properties are dependency properties. Dependency properties provide a way to compute the value of a property based on the value of other inputs.</p>
<p style="11pt;">The major features in this release are:-</p>
<p style="11pt;">
<p style="11pt;"><strong>Visifire works in WPF too</strong><br />
Visifire 2.0 boasts of multi-targeting feature. A single API to draw charts in Silverlight or WPF or WPF Browser Application. Yes, its true, you can start using Visifire in your desktop applications also.</p>
<p style="11pt;">
<p style="11pt;"><strong>Realtime Update</strong><br />
Any property of Visifire charts can be updated in realtime. No need to redraw the chart. Visifire1.x supported realtime update through Javascript, but not from managed code. We learnt that Visifire is being extensively used in managed code &amp; updating charts in realtime is one of the most coveted feature. Hence, we implemented it. Real time update is showcased both in <a href="http://www.visifire.com/silverlight_chart_designer.php">Chart Designer</a> &amp; <a href="http://www.visifire.com/silverlight_charts_gallery.php">Gallery</a>.</p>
<p style="11pt;">
<p style="11pt;"><strong>Scrollable Charts</strong><br />
The name says it all. You can scroll the datapoints inside the charts. All chart types in the <a href="http://www.visifire.com/silverlight_charts_gallery.php">Gallery</a> have an example showcasing this feature.</p>
<p style="11pt;">
<p style="11pt;"><strong>Styling</strong><br />
Visifire 2.0 charts can be styled. If you want to make the charts look the way you want &amp; still harness the flexibility of Visifire, you can do so by styling the charts globally.</p>
<p style="11pt;">
<p style="11pt;"><strong>Editable in Blend</strong><br />
Designing requires a good Design Tool. It is true even for Silverlight Apps &amp; that&#8217;s why Microsoft has Expression Blend. Visifire charts can now be designed in Microsoft Expression Blend.</p>
<p style="11pt;">
<p style="11pt;"><strong>Elegant Animation</strong><br />
Currently Visifire2.0 contains only one animation per chart type. The same animation doesn&#8217;t look good for all chart types. Hence, for every chart type a specific animation has been handpicked &amp; polished to perfection.</p>
<p style="11pt;">
<p style="11pt;">
<p style="11pt;">
<p style="11pt;">
<p style="11pt;">Download Visifire 2.0 beta <a href="http://www.visifire.com/download_silverlight_charts.php">here</a>.</p>
<p style="11pt;">This blog will be followed by a series of blogs on new features of Visifire2.0 &amp; their implementation, so stay tuned.</p>
<p style="11pt;">PS: Forget not to check out <a href="http://visifire.com/silverlight_chart_designer.php">Chart Designer</a>. It updates the chart instantly &amp; no longer requires redraw!</p>
<p style="11pt;">
<p style="11pt;">Cheers,</p>
<p style="11pt;">Team Visifire</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Visifire 2.0 beta Released!" data-via="visifire" data-url="http://www.visifire.com/blog/2008/11/21/visifire-20-beta-release/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2008/11/21/visifire-20-beta-release/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Visifire v1.5.5 released</title>
		<link>http://www.visifire.com/blog/2008/11/05/visifire-v155-released/</link>
		<comments>http://www.visifire.com/blog/2008/11/05/visifire-v155-released/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 19:39:21 +0000</pubDate>
		<dc:creator>Chirag</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=60</guid>
		<description><![CDATA[Hi, The following bugs have been fixed in this release Chart type StackedArea100 crashed on setting YValue = 0 for any DataPoint. In DataPoint, the property MarkerEnabled was being taken true for both boolean values. ToolTip and Events were not working with 3D Chart if AnimationType = Type4 and no. of DataPoint &#62; 900. Pie [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>The following bugs have been fixed in this release</p>
<ul>
<li>Chart type StackedArea100 crashed on setting YValue = 0 for any DataPoint.</li>
<li>In DataPoint, the property MarkerEnabled was being taken true for both boolean values.</li>
<li>ToolTip and Events were not working with 3D Chart if AnimationType = Type4 and no. of DataPoint &gt; 900.</li>
<li>Pie and Doughnut Charts threw exception on MouseOver event with Href being set.</li>
<li>ShadowEnabled threw exception when chart is drawn from managed code.</li>
</ul>
<p>Enhancements</p>
<ul>
<li>Improved Axis Label Placement.</li>
<li>LineStyle will be reflected on LegendEntry in Legend.</li>
</ul>
<p>Download the latest release <a title="Download" href="../../download_silverlight_charts.php">here</a>.</p>
<p>Cheers,<br />
Team Visifire</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Visifire v1.5.5 released" data-via="visifire" data-url="http://www.visifire.com/blog/2008/11/05/visifire-v155-released/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2008/11/05/visifire-v155-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Silverlight Charts Visifire now supports Silverlight 2!</title>
		<link>http://www.visifire.com/blog/2008/10/16/open-source-silverlight-charts-visifire-now-supports-silverlight-2/</link>
		<comments>http://www.visifire.com/blog/2008/10/16/open-source-silverlight-charts-visifire-now-supports-silverlight-2/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 07:34:19 +0000</pubDate>
		<dc:creator>Chirag</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/?p=44</guid>
		<description><![CDATA[Hi, Visifire now works with Silverlight 2. In fact no changes were required to port Visifire from Silverlight 2 RC0 (Visifire v1.5.0 was released recently to developers with Silverlight 2 RC0 compatibility). All live examples in the website are successfully tested against Silverlight 2. Download your copy of Visifire here. Thanks for listening, Team Visifire [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Visifire now works with Silverlight 2. In fact no changes were required to port Visifire from<br />
Silverlight 2 RC0 (<a title="Visifire for Silverligh 2 RC0" href="http://www.visifire.com/blog/2008/10/07/visifire-for-silverlight-2-release-candidate-0/">Visifire v1.5.0</a> was released recently to developers with Silverlight 2 RC0 compatibility).</p>
<p>All live examples in the website are successfully tested against Silverlight 2.<br />
Download your copy of Visifire <a href="http://www.visifire.com/download_silverlight_charts.php">here</a>.</p>
<p>Thanks for listening,</p>
<p>Team Visifire</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Open Source Silverlight Charts Visifire now supports Silverlight 2!" data-via="visifire" data-url="http://www.visifire.com/blog/2008/10/16/open-source-silverlight-charts-visifire-now-supports-silverlight-2/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2008/10/16/open-source-silverlight-charts-visifire-now-supports-silverlight-2/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Sparkline Charts using Visifire</title>
		<link>http://www.visifire.com/blog/2008/06/16/sparkline-charts-using-visifire/</link>
		<comments>http://www.visifire.com/blog/2008/06/16/sparkline-charts-using-visifire/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 14:43:37 +0000</pubDate>
		<dc:creator>karthik</dc:creator>
				<category><![CDATA[Creative Use of Visifire]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorials and Samples]]></category>

		<guid isPermaLink="false">http://www.visifire.com/blog/2008/06/16/sparkline-charts-using-visifire/</guid>
		<description><![CDATA[In this blog I&#8217;ll show how to create Sparkline Charts using Line charts from Visifire. Let me start by showing a sample of the sparkline chart: The following XML is a bare bone XML required to create sparkline charts: &#60;vc:Chart xmlns:vc="clr-namespace:Visifire.Charts;assembly=Visifire.Charts" AnimationEnabled="False" Padding="1" BorderThickness="0" Watermark="False"&#62; &#60;vc:AxisX Enabled="False"/&#62; &#60;vc:AxisY Enabled="False" StartFromZero="False"/&#62; &#60;vc:DataSeries RenderAs="Line" LabelEnabled="False" MarkerEnabled="False" &#62; [...]]]></description>
			<content:encoded><![CDATA[<p>In this blog I&#8217;ll show how to create Sparkline Charts using Line charts from Visifire.</p>
<p>Let me start by showing a sample of the sparkline chart: <a href="http://visifire.com/blog/wp-content/post_images/SparklinechartsusingVisifire_DDFF/image.png"><img border="0" width="186" src="http://visifire.com/blog/wp-content/post_images/SparklinechartsusingVisifire_DDFF/image_thumb.png" alt="image" height="23" /></a></p>
<p>The following XML is a bare bone XML required to create sparkline charts:</p>
<pre>&lt;vc:Chart xmlns:vc="clr-namespace:Visifire.Charts;assembly=Visifire.Charts"
AnimationEnabled="False" Padding="1" BorderThickness="0" Watermark="False"&gt; 

  &lt;vc:AxisX Enabled="False"/&gt;
  &lt;vc:AxisY Enabled="False" StartFromZero="False"/&gt; 

  &lt;vc:DataSeries RenderAs="Line" LabelEnabled="False" MarkerEnabled="False" &gt;
    .
    .
    .
  &lt;/vc:DataSeries&gt; 

&lt;/vc:Chart&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Highlighting of the various points has to be done by selecting the color for the marker.</p>
<p>To highlight any point you have to enable the marker for the point and set the color. If color is not selected then default color will be applied. Also set the marker size as per requirement. Have a look at the example below, it shows how to highlight the start and end points.</p>
<pre>&lt;vc:Chart xmlns:vc="clr-namespace:Visifire.Charts;assembly=Visifire.Charts" Theme="Theme1"
          AnimationEnabled="False" Padding="1" BorderThickness="0" Watermark="False"&gt; 

  &lt;vc:AxisX Enabled="False"/&gt;
  &lt;vc:AxisY Enabled="False" StartFromZero="False"/&gt; 

  &lt;vc:DataSeries RenderAs="Line" LabelEnabled="False" MarkerEnabled="False"
                 MarkerSize="5" LineThickness="0.5" Color="Black"&gt;
    &lt;vc:DataPoint YValue="44.01" MarkerEnabled="True" Color="Blue" /&gt;
    .
    .
    .
    &lt;vc:DataPoint YValue="44.5" MarkerEnabled="True" Color="Blue" /&gt;
  &lt;/vc:DataSeries&gt; 

&lt;/vc:Chart&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Any point can be highlighted to show its importance</p>
<p>The screen shot below shows a HTML table containing Visifire sparkline charts, click on the image below to see silverlight example:</p>
<p> <a href="http://www.visifire.com/downloads/samples/embedded/sparkline_sample_16062008/demo/SparkLine.htm"><img border="0" width="367" src="http://visifire.com/blog/wp-content/post_images/SparklinechartsusingVisifire_DDFF/image1.png" alt="image" height="156" /></a></p>
<p>The code for this example can be downloaded from the <a href="http://www.visifire.com/downloads/samples/embedded/sparkline_sample_16062008/sparkline_sample_16062008.zip">here</a>.</p>
<p>Visifire sparkline charts support all events that are supported by line charts and hence can be easily used for creating drill down charts.</p>
<div style="float: left; margin-right: 10px; margin-top: 3px;"><a href="http://twitter.com/share" class="twitter-share-button" data-text="Sparkline Charts using Visifire" data-via="visifire" data-url="http://www.visifire.com/blog/2008/06/16/sparkline-charts-using-visifire/" data-count="none" data-via="visifire" data-related=":">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.visifire.com/blog/2008/06/16/sparkline-charts-using-visifire/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

