I need you to see two graphs of lines in the same graph and coordinates a value in string format for example "MED".
Encoding I can only see one at a time and not both
any idea?
Thank
alejo
Code: Select all
package ar.com.osde.component.chart.impl;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.labels.XYItemLabelGenerator;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.AbstractXYDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;
public class GraficoEtiquetas2 extends ApplicationFrame {
public GraficoEtiquetas2(String title) {
super(title);
XYDataset dataset = createDataset();
XYDataset dataset2 = createDataset2();
final JFreeChart chart = createOverlaidChart(dataset, dataset2);
final ChartPanel panel = new ChartPanel(chart, true, true, true, true, true);
panel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(panel);
}
private static XYDataset createDataset2() {
LabeledXYDataset ds = new LabeledXYDataset();
ds.add(11, 0, "");
ds.add(12, 68, "XXXX");
ds.add(13, 65, "");
ds.add(14, 67, "");
ds.add(15, 69, "");
ds.add(16, 60, "");
ds.add(17, 83, "");
ds.add(18, 86, "");
ds.add(19, 70, "");
ds.add(20, 60, "");
ds.add(21, 55, "");
ds.add(22, 54, "");
ds.add(23, 50, "");
return ds;
}
private static XYDataset createDataset() {
LabeledXYDataset ds = new LabeledXYDataset();
ds.add(11, 0, "");
ds.add(12, 38, "MED");
ds.add(13, 35, "MED");
ds.add(14, 37, "");
ds.add(15, 39, "");
ds.add(16, 30, "FED.");
ds.add(17, 53, "");
ds.add(18, 56, "");
ds.add(19, 40, "MED./FED.");
ds.add(20, 30, "MED");
ds.add(21, 25, "FED.");
ds.add(22, 24, "");
ds.add(23, 20, "MED");
return ds;
}
private static class LabeledXYDataset extends AbstractXYDataset {
/**
*
*/
private static final long serialVersionUID = -5051021615818027668L;
private static final int N = 26;
private List<Number> x = new ArrayList<Number>(N);
private List<Number> y = new ArrayList<Number>(N);
private List<String> label = new ArrayList<String>(N);
public void add(double x, double y, String label){
this.x.add(x);
this.y.add(y);
this.label.add(label);
}
public String getLabel(int series, int item) {
return label.get(item);
}
@Override
public int getSeriesCount() {
return 1;
}
@Override
public Comparable getSeriesKey(int series) {
return "Unit";
}
public int getItemCount(int series) {
return label.size();
}
public Number getX(int series, int item) {
return x.get(item);
}
public Number getY(int series, int item) {
return y.get(item);
}
}
private static class LabelGenerator implements XYItemLabelGenerator {
public String generateLabel(XYDataset dataset, int series, int item) {
LabeledXYDataset labelSource = (LabeledXYDataset) dataset;
return labelSource.getLabel(series, item);
}
}
@SuppressWarnings("unused")
private static JFreeChart createOverlaidChart(final XYDataset dataset, final XYDataset dataset2) {
NumberAxis domain = new NumberAxis("Unit");
NumberAxis range = new NumberAxis("Price");
domain.setAutoRangeIncludesZero(false);
XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
renderer.setBaseItemLabelGenerator(new LabelGenerator());
renderer.setBaseItemLabelPaint(Color.red.darker());
renderer.setBasePositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
renderer.setBaseItemLabelFont(
renderer.getBaseItemLabelFont().deriveFont(14f));
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
XYPlot plot = new XYPlot(dataset, domain, range, renderer);
XYItemRenderer renderer2 = new XYLineAndShapeRenderer();
renderer2.setBaseItemLabelGenerator(new LabelGenerator());
renderer2.setBaseItemLabelPaint(Color.green.brighter());
renderer2.setBasePositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
renderer2.setBaseItemLabelFont(
renderer2.getBaseItemLabelFont().deriveFont(14f));
renderer2.setBaseItemLabelsVisible(true);
renderer2.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
plot.setDataset(dataset2);
//plot.setRenderer(1, renderer2);
// plot.setOutlineVisible(true);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
JFreeChart chart = new JFreeChart(
"Unit Price", JFreeChart.DEFAULT_TITLE_FONT, plot, true);
return chart;
}
public static void main(String[] args) {
final GraficoEtiquetas2 demo = new GraficoEtiquetas2("Overlaid XYPlot Demo");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}