<div>
<p>I'm creating a Bar Chart (using Birt 4.4.2) and want to hide a value on X axis when all the Y values (of every series) for this specific X value are null or 0.</p>
<p>I have 2 series and here is the code I've tried:</p>
function afterDataSetFilled( series, dataSet, icsc )<br>
{<br>
var xAxis = icsc.getChartInstance().getAxes().get(0);<br>
if (xAxis.getAssociatedAxes().size() > 0) {<br>
var yAxis1 = xAxis.getAssociatedAxes().get(0);<br>
var yRTSeries1 = yAxis1.getSeriesDefinitions().get(0).getRunTimeSeries();<br>
if (yRTSeries1.size() > 0) {<br>
// We have already computed the first Y serie, we are currently computing the 2nd one<br>
var yRTSerie1 = yRTSeries1.get(0);<br>
var yValues1 = yRTSerie1.getDataSet().getValues();<br>
var yValues2 = dataSet.getValues();<br>
var xSerie = xAxis.getSeriesDefinitions().get(0).getRunTimeSeries().get(0);<br>
var xValues = xSerie.getDataSet().getValues();<br>
<br>
// Iterate on each value of Y series, and if they are null or near 0, we remove it from every Y & X series<br>
for (var i = 0 ; i < yValues1.length ; i++) {<br>
var yValue1 = yValues1
;<br>
var yValue2 = yValues2;<br>
if ((yValue1 == null || yValue1 <= 0.001) && (yValue2 == null || yValue2 <= 0.001)) {<br>
yValues1.splice(i, 1);<br>
yValues2.splice(i, 1);<br>
xValues.splice(i, 1);<br>
}<br>
}<br>
}<br>
}<br>
}
<p>With this code, the null & near 0 values are correctly removed from the X (& Y) axes, but Birt duplicates the last X value (with its corresponding Y values) for each previously removed values ! <a data-ipb='nomediaparse' href='http://i.stack.imgur.com/vkCMM.png'><img src="http://i.stack.imgur.com/vkCMM.png" alt="vkCMM.png"></a> I've tried to set null to values instead of "splicing" them from the DataSets, but in that case, a "null" X value is displayed.</p>
<span>yValues1</span><span>[</span><span>i</span><span>]</span><span> </span><span>=</span><span> </span><span>null</span><span>;</span><br><span>yValues2</span><span>[</span><span>i</span><span>]</span><span> </span><span>=</span><span> </span><span>null</span><span>;</span><br><span>xValues</span><span>[</span><span>i</span><span>]</span><span> </span><span>=</span><span> </span><span>null</span><span>;</span>
<p><a data-ipb='nomediaparse' href='http://i.stack.imgur.com/dKi25.png'><img src="http://i.stack.imgur.com/dKi25.png" alt="dKi25.png"></a></p>
<p>Then I tried to setDataSet to each series at the end of the for loop, but nothing changed.</p>
<span>importPackage</span><span>(</span><span> </span><span>Packages</span><span>.</span><span>org</span><span>.</span><span>eclipse</span><span>.</span><span>birt</span><span>.</span><span>chart</span><span>.</span><span>model</span><span>.</span><span>data</span><span>.</span><span>impl</span><span>);</span><span> </span><span>// Thanks to <a data-ipb='nomediaparse' href='http://birtworld.blogspot.fr/2012/05/add-values-to-birt-chart.html'>http://birtworld.blogspot.fr/2012/05/add-values-to-birt-chart.html</a></span><br><span>// Applying changes</span><br><span>yRTSerie1</span><span>.</span><span>setDataSet</span><span>(</span><span>NumberDataSetImpl</span><span>.</span><span>create</span><span>(</span><span>yValues1</span><span>));</span><br><span>series</span><span>.</span><span>setDataSet</span><span>(</span><span>NumberDataSetImpl</span><span>.</span><span>create</span><span>(</span><span>yValues2</span><span>));</span><br><span>xSerie</span><span>.</span><span>setDataSet</span><span>(</span><span>TextDataSetImpl</span><span>.</span><span>create</span><span>(</span><span>xValues</span><span>));</span></div>
<p> </p>
<p>I've created a post on stackoverflow for that question here: <a data-ipb='nomediaparse' href='http://stackoverflow.com/q/36864255/535203'>http://stackoverflow.com/q/36864255/535203</a></p>
<p> </p>
<p>Any idea or help?</p>