stackedXYAreachart - series not displayed

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
chrisrhyno2003
Posts: 30
Joined: Thu Jun 18, 2015 5:42 pm
antibot: No, of course not.

stackedXYAreachart - series not displayed

Post by chrisrhyno2003 » Wed Jul 22, 2015 11:31 pm

Hi,
Could you tell me what am I doing wrong? Series 1 is never seen even though it has a value. Is this a stackeXYAreaChart property? Even though I have values for series 2, I don't see in on the chart. I am plotting the order series in the same way - Series 1, 2, 3, followed by 4.

package test;

import java.awt.BorderLayout;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.CrosshairState;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.PlotRenderingInfo;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StackedXYAreaRenderer2;
import org.jfree.chart.renderer.xy.XYItemRendererState;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimePeriod;
import org.jfree.data.time.TimeTableXYDataset;
import org.jfree.data.xy.TableXYDataset;
import org.jfree.data.xy.XYDataset;


public class Test2
{

private static final long serialVersionUID = 1L;

public Test2(String s)
{
JFreeChart jfreechart = createChart(createDataset());
JPanel jpanel = new ChartPanel(jfreechart);
JPanel masterPanel = new JPanel(new BorderLayout());
masterPanel.add(jpanel, BorderLayout.CENTER);
masterPanel.add(addUserControls(jfreechart), BorderLayout.EAST);
JFrame frame = new JFrame();
frame.add(masterPanel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private static TimeTableXYDataset createDataset()
{
TimeTableXYDataset xyseries = new TimeTableXYDataset();

TimePeriod timePeriod = new Millisecond();
xyseries.add(timePeriod, 0D, "Series 1");
xyseries.add(timePeriod, 0D, "Series 2");
xyseries.add(timePeriod, 0D, "Series 3");
xyseries.add(timePeriod, 20D, "Series 4");
timePeriod = new Millisecond();
xyseries.add(timePeriod, 15D, "Series 1");
xyseries.add(timePeriod, 0D, "Series 2");
xyseries.add(timePeriod, 0D, "Series 3");
xyseries.add(timePeriod, 0D, "Series 4");
timePeriod = new Millisecond();
xyseries.add(timePeriod, 0D, "Series 1");
xyseries.add(timePeriod, 0D, "Series 2");
xyseries.add(timePeriod, 35D, "Series 3");
xyseries.add(timePeriod, 0D, "Series 4");
timePeriod = new Millisecond();
xyseries.add(timePeriod, 0D, "Series 1");
xyseries.add(timePeriod, 100D, "Series 2");
xyseries.add(timePeriod, 0D, "Series 3");
xyseries.add(timePeriod, 0D, "Series 4");


return xyseries;
}

private static JFreeChart createChart(TableXYDataset tablexydataset)
{
JFreeChart jfreechart = ChartFactory.createStackedXYAreaChart("Stacked XY Area Chart Demo 1", "X Value", "Y Value", tablexydataset, PlotOrientation.VERTICAL, true, true, false);
XYPlot xyplot = (XYPlot)jfreechart.getPlot();
StackedXYAreaRenderer2 stackedxyarearenderer2 = new StackedXYAreaRenderer2() {
public void drawItem(Graphics2D g2,
XYItemRendererState state,
Rectangle2D dataArea,
PlotRenderingInfo info,
XYPlot plot,
ValueAxis domainAxis,
ValueAxis rangeAxis,
XYDataset dataset,
int series,
int item,
CrosshairState crosshairState,
int pass) {
if (!getItemVisible(series, item)) {
return;
}
super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState, pass);
}
};
stackedxyarearenderer2.setToolTipGenerator(new StandardXYToolTipGenerator());
xyplot.setRenderer(0, stackedxyarearenderer2);
return jfreechart;
}

public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}

public static void main(String args[])
{
Test2 stackedxyareachartdemo1 = new Test2("Stacked XY Area Chart Demo 1");
}

public JPanel addUserControls(JFreeChart chartPlot) {
JPanel userPanel = new JPanel(new GridLayout(2,2));
JCheckBox Series0Button = new JCheckBox("Series 1");
Series0Button.setSelected(true);
Series0Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println("Series count" + chartPlot.getXYPlot().getSeriesCount());
if (Series0Button.isSelected()) {
StackedXYAreaRenderer2 renderer = (StackedXYAreaRenderer2) chartPlot.getXYPlot().getRenderer();
renderer.setSeriesVisible(0, Boolean.TRUE, true);
} else {
StackedXYAreaRenderer2 renderer = (StackedXYAreaRenderer2) chartPlot.getXYPlot().getRenderer();
renderer.setSeriesVisible(0, Boolean.FALSE, true);
}
}
});

JCheckBox series1Button = new JCheckBox("Series 2");
series1Button.setSelected(true);
series1Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (series1Button.isSelected()) {
StackedXYAreaRenderer2 renderer = (StackedXYAreaRenderer2) chartPlot.getXYPlot().getRenderer();
renderer.setSeriesVisible(1, Boolean.TRUE, true);
} else {
StackedXYAreaRenderer2 renderer = (StackedXYAreaRenderer2) chartPlot.getXYPlot().getRenderer();
renderer.setSeriesVisible(1, Boolean.FALSE, true);
}
}
});
userPanel.add(Series0Button);
userPanel.add(series1Button);
return userPanel;
}
}

Locked