Charts with Dynamic Height or Width based on Categories/Data


You may have been in this situation before – you designed a chart based on a particular dataset and everything looks great.  However, later the data volume increases, or new categories dynamically show up in your data source, and there is not enough horizontal/vertical space in the chart to show all the data or categories.  Unless, of course, you applied an approach to dynamically increase the height/width of the chart.   

 

Chart in report expands dynamically with number of categories

There are two new Chart RDL properties in the report designer / report builder property grid to simplify this task in Reporting Services 2008:

  • DynamicHeight: the height the chart should grow/shrink at runtime
  • DynamicWidth: the width the chart should grow/shrink at runtime

If the properties are not specified, then the design time sizes will be applied.  Both properties can be set to any RDL expression that evaluates to a size string at runtime (e.g. =”3 in”).  Btw, note the space in the size string between the numeric part and the size unit.  

The attachment of this posting contains a small report that demonstrates this technique.  The report is based on the Northwind sample database (database download link).  The chart in the report dynamically increases its width based on the number of countries shown in the chart (determined by a report parameter value).  To accomplish this, the DynamicWidth property of the chart is set to the following expression:

   =(1 + Parameters!TopNCountries.Value / 2) & ” in”

In this example, if you choose to show only the top 5 countries, the chart will have a width of 1+5/2 = 3.5 inches.  If you select the top 10 countries, the chart has a width of 1+10/2 = 6 inches and therefore more horizontal room to draw additional categories.

DynamicChartSizing.rdl

Comments (0)

Skip to main content