<div dir="ltr">Hi all,<div><br></div><div>I have encountered a strange behavior.  I have two vtkBarPlots, one in corner 0 and one in corner 1. I want to be able to add/remove any of them from a vtkChartXY.  However the plot in the corner 0 cannot be added back to corner 0 once removed.  This issues doe not seems to be a problem with the plot in corner 1 or when adding back the first plot into another corner.</div>


<div><br></div><div>I enclosed a simple example (derived from TestBarGraph) that shows the issue.  Look at the end of the sample code to see the commented options that show the behavior explained above.  </div><div><br></div>


<div>This is with vtk 6.0 and Windows 7.</div><div><br></div><div><br></div><div>Thanks all.</div><div><br></div><div><br></div><div><br></div><div>-----------------------------------------------</div><div><div>#include &quot;vtkRenderer.h&quot;</div>


<div>#include &quot;vtkRenderWindow.h&quot;</div><div>#include &quot;vtkSmartPointer.h&quot;</div><div>#include &quot;vtkChartXY.h&quot;</div><div>#include &quot;vtkPlot.h&quot;</div><div>#include &quot;vtkPlotBar.h&quot;</div>


<div>#include &quot;vtkTable.h&quot;</div><div>#include &quot;vtkIntArray.h&quot;</div><div>#include &quot;vtkContextView.h&quot;</div><div>#include &quot;vtkContextScene.h&quot;</div><div>#include &quot;vtkRenderWindowInteractor.h&quot;</div>


<div>#include &quot;vtkNew.h&quot;</div><div><br></div><div>// Monthly circulation data</div><div>static int data_2008[] = {10822, 10941, 9979, 10370, 9460, 11228,</div><div>                          15093, 12231, 10160, 9816, 9384, 7892};</div>


<div>static int data_2009[] = {9058, 9474, 9979, 9408, 8900, 11569,</div><div>                          14688, 12231, 10294, 9585, 8957, 8590};</div><div>static int data_2010[] = {9058, 10941, 9979, 10270, 8900, 11228,</div>


<div>                          14688, 12231, 10160, 9585, 9384, 8590};</div><div><br></div><div>//----------------------------------------------------------------------------</div><div>int main(int)</div><div>{</div><div>


  // Set up a 2D scene, add an XY chart to it</div><div>  vtkNew&lt;vtkContextView&gt; view;</div><div>  view-&gt;GetRenderer()-&gt;SetBackground(1.0, 1.0, 1.0);</div><div>  view-&gt;GetRenderWindow()-&gt;SetSize(400, 300);</div>


<div>  vtkNew&lt;vtkChartXY&gt; chart;</div><div>  view-&gt;GetScene()-&gt;AddItem(chart.GetPointer());</div><div><br></div><div>  // Create a table with some points in it...</div><div>  vtkNew&lt;vtkTable&gt; table;</div>


<div><br></div><div>  vtkNew&lt;vtkIntArray&gt; arrMonth;</div><div>  arrMonth-&gt;SetName(&quot;Month&quot;);</div><div>  table-&gt;AddColumn(arrMonth.GetPointer());</div><div><br></div><div>  vtkNew&lt;vtkIntArray&gt; arr2008;</div>


<div>  arr2008-&gt;SetName(&quot;2008&quot;);</div><div>  table-&gt;AddColumn(arr2008.GetPointer());</div><div><br></div><div>  vtkNew&lt;vtkIntArray&gt; arr2009;</div><div>  arr2009-&gt;SetName(&quot;2009&quot;);</div><div>


  table-&gt;AddColumn(arr2009.GetPointer());</div><div><br></div><div>  vtkNew&lt;vtkIntArray&gt; arr2010;</div><div>  arr2010-&gt;SetName(&quot;2010&quot;);</div><div>  table-&gt;AddColumn(arr2010.GetPointer());</div><div>


<br></div><div>  table-&gt;SetNumberOfRows(12);</div><div>  for (int i = 0; i &lt; 12; i++)</div><div>    {</div><div>    table-&gt;SetValue(i,0,i+1);</div><div>    table-&gt;SetValue(i,1,data_2008[i]);</div><div>    table-&gt;SetValue(i,2,data_2009[i]);</div>


<div>    table-&gt;SetValue(i,3,data_2010[i]);</div><div>    }</div><div><br></div><div>  // Add multiple bar plots, setting the colors etc</div><div>  vtkPlot *plot = 0;</div><div><br></div><div>  vtkSmartPointer&lt;vtkPlotBar&gt; plot1 = vtkSmartPointer&lt;vtkPlotBar&gt;::New();</div>


<div>  chart-&gt;AddPlot(plot1);</div><div>  plot1-&gt;SetInputData(table.GetPointer(), 0, 1);</div><div>  plot1-&gt;SetColor(0, 255, 0, 255);</div><div>  chart-&gt;SetPlotCorner(plot1,0);</div><div><br></div><div>  vtkSmartPointer&lt;vtkPlotBar&gt; plot2 = vtkSmartPointer&lt;vtkPlotBar&gt;::New();</div>


<div>  chart-&gt;AddPlot(plot2);</div><div>  plot2-&gt;SetInputData(table.GetPointer(), 0, 2);</div><div>  plot2-&gt;SetColor(255, 0, 0, 255);</div><div>  chart-&gt;SetPlotCorner(plot2,1);</div><div><br></div><div>  /* Code to see the problems */</div>


<div><br></div><div>  /* The plot1 is NOT added back */</div><div>  chart-&gt;RemovePlotInstance(plot1);</div><div>  chart-&gt;AddPlot(plot1);</div><div><br></div><div>  /* The plot1 IS added back */</div><div>//  chart-&gt;RemovePlotInstance(plot1);</div>


<div>//  chart-&gt;AddPlot(plot1);</div><div>//  chart-&gt;SetPlotCorner(plot1,2);</div><div><br></div><div>  /* The plot2 IS added back to the chart */</div><div>//  chart-&gt;RemovePlotInstance(plot2);</div><div>//  chart-&gt;AddPlot(plot2);</div>


<div>//  chart-&gt;SetPlotCorner(plot2,1);</div><div><br></div><div>  //Finally render the scene and compare the image to a reference image</div><div>  view-&gt;GetRenderWindow()-&gt;SetMultiSamples(0);</div><div>  view-&gt;GetInteractor()-&gt;Initialize();</div>


<div>  view-&gt;GetInteractor()-&gt;Start();</div><div><br></div><div>  return EXIT_SUCCESS;</div><div>}</div></div><div>-------------------------------------</div></div>