Example usage for org.jfree.chart.fx ChartViewer ChartViewer

List of usage examples for org.jfree.chart.fx ChartViewer ChartViewer

Introduction

In this page you can find the example usage for org.jfree.chart.fx ChartViewer ChartViewer.

Prototype

public ChartViewer(JFreeChart chart) 

Source Link

Document

Creates a new viewer to display the supplied chart in JavaFX.

Usage

From source file:com.bdb.weather.display.summary.RainHourChart.java

public RainHourChart() {
    for (int i = 0; i < 24; i++)
        hourRainDataset.addValue(0.0, CATEGORY_NAME, Integer.toString(i));

    JFreeChart rainChart = ChartFactory.createBarChart(null, "Hour", "", hourRainDataset,
            PlotOrientation.VERTICAL, false, true, false);
    ChartViewer rainChartViewer = new ChartViewer(rainChart);
    rainChartViewer.setMaxHeight(10000);
    rainChartViewer.setMaxWidth(10000);/*from   w  w w  .j a v a  2 s .  c o m*/
    rainChartViewer.setPrefSize(800, 200);
    plot = (CategoryPlot) rainChart.getPlot();
    plot.setRangeAxis(RainRangeAxis.create());
    this.getChildren().add(rainChartViewer);
}

From source file:com.bdb.weather.display.summary.TemperatureBinSummaryPlot.java

public TemperatureBinSummaryPlot() {
    plot = new CombinedDomainCategoryPlot();
    JFreeChart chart = new JFreeChart(plot);
    setMaxHeight(10000);/*from  ww w  .  j  a v a  2s.  c o  m*/
    setMaxWidth(10000);

    NumberAxis countAxis = new NumberAxis("Day Count");
    countAxis.setUpperMargin(.2);
    countPlot.setRangeAxis(countAxis);
    countPlot.setDataset(countDataset);

    BarRenderer r = new BarRenderer();
    r.setBaseItemLabelsVisible(true);
    r.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    r.setSeriesPaint(0, Color.BLUE);
    r.setBasePaint(Color.BLUE);
    countPlot.setRenderer(r);

    NumberAxis durationAxis = new NumberAxis("Duration (Hours)");
    durationAxis.setUpperMargin(.2);
    durationPlot.setRangeAxis(durationAxis);
    durationPlot.setDataset(durationDataset);
    r = new BarRenderer();
    r.setBaseItemLabelsVisible(true);
    NumberFormat format = DecimalFormat.getNumberInstance();
    format.setMaximumFractionDigits(1);
    format.setMinimumFractionDigits(1);
    r.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator(
            StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, format));
    r.setSeriesPaint(0, Color.RED);
    r.setBasePaint(Color.RED);
    durationPlot.setRenderer(r);

    plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);
    plot.add(countPlot);
    plot.add(durationPlot);

    chartViewer = new ChartViewer(chart);
    this.setCenter(chartViewer);
}

From source file:com.bdb.weather.display.summary.WindSummary.java

/**
 * Create the plot./* w  ww  . ja va 2 s  . c  o  m*/
 * 
 * @return The panel that contains the plot
 */
private ChartViewer createPlot() {
    JFreeChart chart = ChartFactory.createXYLineChart("", "", "", null, PlotOrientation.VERTICAL, true, true,
            true);
    plot = (XYPlot) chart.getPlot();
    ChartViewer panel = new ChartViewer(chart);
    panel.setPrefSize(500, 300);
    panel.addChartMouseListener(this);

    //
    // Set up the Domain Axis (X)
    //
    dateAxis = new DateAxis("Time");
    dateAxis.setDateFormatOverride(interval.getLegacyFormat());
    dateAxis.setVerticalTickLabels(true);
    plot.setDomainAxis(dateAxis);

    valueAxis = WindSpeedRangeAxis.create();
    plot.setRangeAxis(valueAxis);

    //
    // Set up the renderer to generate tool tips, not show shapes
    //
    DefaultXYItemRenderer renderer = new DefaultXYItemRenderer();
    renderer.setBaseShapesVisible(false);
    renderer.setBaseToolTipGenerator(
            new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                    interval.getLegacyFormat(), Speed.getDefaultFormatter()));
    renderer.setDefaultEntityRadius(1);
    plot.setRenderer(SUSTAINED_WIND_SERIES, renderer);

    renderer = new DefaultXYItemRenderer();
    WeatherSenseConstants.configureGustRenderer(renderer, 0);
    plot.setRenderer(GUST_SERIES, renderer);

    return panel;
}

From source file:com.bdb.weather.display.freeplot.FreePlot.java

/**
 * Constructor.//from   w w w  .j a v a2 s  .  com
 * 
 * @param seriesFactory The factory for creating the series
 * @param controlFactory The factory for creating the controls
 */

@SuppressWarnings("LeakingThisInConstructor")
FreePlot(SeriesCollectionFactory seriesFactory) {
    controls = seriesFactory.createSeriesGroupControls(this);
    factory = seriesFactory;
    this.setTop(createDataRangeSelectionPanel());
    this.setLeft(createDataSelectionPanel(controls.values()));

    ChartViewer chartViewer = new ChartViewer(new JFreeChart(plot));
    chartViewer.setMaxHeight(20000);
    chartViewer.setMaxWidth(20000);
    this.setCenter(chartViewer);

    //
    // Create a default Y Axis
    //
    DateAxis dateAxis = new DateAxis("Date/Time");
    plot.setDomainAxis(dateAxis);
    plot.setRangeAxis(new NumberAxis("Data"));
    plot.setDomainGridlinesVisible(true);
    plot.setDomainGridlinePaint(Color.BLACK);
    plot.setRangeGridlinesVisible(true);
    plot.setRangeGridlinePaint(Color.BLACK);

    buildStrokes();
}

From source file:com.bdb.weather.display.stripchart.StripChart.java

/**
 * Constructor.//from  www  .j  av  a 2 s  . c o  m
 * 
 * @param leftAxisType The type of data that is associated with the left axis
 * @param rightAxisType The type of data that is associated with the right axis
 * @param categorySpanHours How many hours that the X axis should initially display
 * @param maxSpanHours The maximum amount of data to keep in the plots dataset
 */
public StripChart(MeasurementType leftAxisType, MeasurementType rightAxisType, int categorySpanHours,
        int maxSpanHours) {
    span = categorySpanHours;
    this.maxSpanHours = maxSpanHours;

    //
    // Set up the Y axes
    //
    setLeftAxis(leftAxisType);
    setRightAxis(leftAxisType);

    //
    // Set up the X axis
    //
    dateAxis = new DateAxis("Time");
    dateAxis.setAutoRange(false);
    dateAxis.setDateFormatOverride(new SimpleDateFormat("h:mm a"));
    dateAxis.setVerticalTickLabels(true);
    dateAxis.setUpperMargin(.10);

    plot.setDomainAxis(dateAxis);
    plot.mapDatasetToRangeAxis(0, 0);
    plot.mapDatasetToRangeAxis(1, 1);
    adjustDateAxis(Calendar.getInstance());

    chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
    ChartFactory.getChartTheme().apply(chart);
    chartViewer = new ChartViewer(chart);
    this.setCenter(chartViewer);

    chart.getLegend().setPosition(RectangleEdge.RIGHT);
}

From source file:com.bdb.weather.display.summary.RainSummary.java

private Node createChartElements() {
    chart = ChartFactory.createXYBarChart("Water Cycle", "Date", true, "", null, PlotOrientation.VERTICAL, true,
            true, false);/*from ww  w .  j a  v a  2s . com*/
    ChartViewer chartViewer = new ChartViewer(chart);
    chartViewer.setPrefSize(500, 300);
    chartViewer.addChartMouseListener(this);

    rainPlot = (XYPlot) chart.getPlot();
    DateAxis dateAxis = (DateAxis) rainPlot.getDomainAxis();
    dateAxis.setDateFormatOverride(interval.getLegacyFormat());
    ClusteredXYBarRenderer renderer = new ClusteredXYBarRenderer();
    rainPlot.setRenderer(renderer);
    //renderer.setBarAlignmentFactor(0.0);
    renderer.setMargin(0.2);
    renderer.setShadowVisible(false);

    StandardXYToolTipGenerator ttgen = new StandardXYToolTipGenerator(
            StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, interval.getLegacyFormat(),
            Depth.getDefaultFormatter());

    renderer.setBaseToolTipGenerator(ttgen);
    //renderer.setSeriesPaint(0, Color.BLUE); // TODO Use color preferences
    //renderer.setSeriesPaint(1, Color.RED); // TODO Use color preferences

    rainPlot.setRangeAxis(valueAxis);
    rainPlot.getDomainAxis().setVerticalTickLabels(true);

    return chartViewer;
}

From source file:com.bdb.weather.display.summary.TemperatureDeviationPlotPanel.java

public TemperatureDeviationPlotPanel(SummaryInterval interval, ViewLauncher theLauncher,
        SummarySupporter theSupporter) {
    this.setPrefSize(500, 300);
    this.interval = interval;
    chart = ChartFactory.createXYBarChart("Deviation from Average Temperature", "Date", true,
            "Deviation (" + Temperature.getDefaultUnit() + ")", null, PlotOrientation.VERTICAL, true, true,
            false);/*  www  .  j  ava 2  s  . co  m*/

    chartViewer = new ChartViewer(chart);
    chartViewer.setPrefSize(500, 300);
    chartViewer.addChartMouseListener(new ChartMouseListenerFX() {
        @Override
        public void chartMouseClicked(ChartMouseEventFX event) {
            ChartEntity entity = event.getEntity();
            //
            // Was a point on the plot selected?
            //
            if (entity instanceof XYItemEntity) {
                XYItemEntity itemEntity = (XYItemEntity) entity;
                XYDataset dataset = itemEntity.getDataset();
                Number x = dataset.getXValue(itemEntity.getSeriesIndex(), itemEntity.getItem());
                LocalDate date = LocalDate.from(Instant.ofEpochMilli(x.longValue()));
                boolean doubleClick = event.getTrigger().getClickCount() == 2;
                if (doubleClick) {
                    supporter.launchView(launcher, date);
                }
            }
        }

        @Override
        public void chartMouseMoved(ChartMouseEventFX event) {
            // Do nothing
        }
    });
    deviationPlot = (XYPlot) chart.getPlot();
    this.launcher = theLauncher;
    this.supporter = theSupporter;

    DateFormat dateFormat = interval.getLegacyFormat();
    StandardXYItemLabelGenerator labelGen = new StandardXYItemLabelGenerator(
            StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, dateFormat,
            Temperature.getDefaultFormatter());

    StandardXYToolTipGenerator ttGen = new StandardXYToolTipGenerator(
            StandardCategoryToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT_STRING, dateFormat,
            Temperature.getDefaultFormatter());

    valueAxis = deviationPlot.getRangeAxis();
    valueAxis.setUpperMargin(.20);
    valueAxis.setLowerMargin(.20);

    deviationPlot.getDomainAxis().setVerticalTickLabels(true);
    DateAxis dateAxis = (DateAxis) deviationPlot.getDomainAxis();
    dateAxis.setDateFormatOverride(dateFormat);
    //dateAxis.setTickUnit(interval.getDateTickUnit());

    //DefaultTableColumnModel colModel = new DefaultTableColumnModel();

    dataTable = new TableView();
    //dataTable.setModel(tableModel);
    //dataTable.setColumnModel(colModel);

    //dataTable.setAutoCreateColumnsFromModel(false);

    for (int i = 0; i < TABLE_HEADINGS.length; i++) {
        TableColumn col = new TableColumn();
        col.setText(TABLE_HEADINGS[i]);
        //col.setModelIndex(i);
        //colModel.addColumn(col);
    }

    //tableModel.setColumnCount(TABLE_HEADINGS.length);

    this.setTabContents(chartViewer, dataTable);

    lowRenderer.setBasePaint(Color.BLUE);
    lowRenderer.setBaseItemLabelGenerator(labelGen);
    lowRenderer.setBaseToolTipGenerator(ttGen);
    lowRenderer.setBarAlignmentFactor(.6);
    lowRenderer.setShadowVisible(false);

    meanRenderer.setSeriesPaint(0, Color.CYAN);
    meanRenderer.setBaseItemLabelGenerator(labelGen);
    meanRenderer.setBaseToolTipGenerator(ttGen);
    meanRenderer.setBarAlignmentFactor(.3);
    meanRenderer.setShadowVisible(false);

    highRenderer.setSeriesPaint(0, Color.GRAY);
    highRenderer.setBaseItemLabelGenerator(labelGen);
    highRenderer.setBaseToolTipGenerator(ttGen);
    highRenderer.setShadowVisible(false);
}

From source file:com.bdb.weather.display.current.Thermometer.java

private ChartViewer createChartElements() {
    thermometerPlot//from   w w  w.  ja  va  2s. co  m
            .setMercuryPaint(new GradientPaint(0.0f, 0.0f, Color.RED.darker(), 5.0f, 5.0f, Color.RED, true));
    thermometerPlot.setUseSubrangePaint(false);
    thermometerPlot.setBulbRadius(15);
    thermometerPlot.setColumnRadius(10);
    thermometerPlot.setValueLocation(ThermometerPlot.RIGHT);
    thermometerPlot.setValuePaint(Color.BLACK);
    thermometerPlot.setSubrange(0, 80.0, 80.0);
    thermometerPlot.setSubrangePaint(0, Color.BLUE);
    thermometerPlot.setSubrangePaint(1, Color.RED);
    thermometerPlot.setSubrange(1, 1000.0, 1000.0);
    thermometerPlot.setSubrange(2, 1000.0, 1000.0);
    thermometerPlot.setBackgroundPaint(Color.GRAY);
    thermometerPlot.setOutlineVisible(false);
    thermometerPlot.setValueFont(thermometerPlot.getValueFont().deriveFont(14.0F).deriveFont(Font.PLAIN));

    chart = new JFreeChart(thermometerPlot);
    chart.setTitle(titleProperty.getValue());
    chart.setBackgroundPaint(Color.GRAY);

    ChartViewer chartViewer = new ChartViewer(chart);
    chartViewer.setMinHeight(75);
    chartViewer.setMinWidth(25);
    return chartViewer;
}

From source file:com.bdb.weather.display.day.DayRainPane.java

/**
 * Constructor./*w  w w. j ava 2s .  c  o  m*/
 */
public DayRainPane() {
    setPrefSize(400, 300);
    chart = ChartFactory.createBarChart("Water Cycle", "Hour", "", null, PlotOrientation.VERTICAL, true, true,
            false);

    chartViewer = new ChartViewer(chart);

    rainPlot = (CategoryPlot) chart.getPlot();
    rainPlot.setNoDataMessage("There is no data for the specified day");

    BarRenderer renderer = (BarRenderer) rainPlot.getRenderer();
    renderer.setBasePaint(Color.BLUE);
    renderer.setSeriesPaint(0, Color.BLUE);
    renderer.setSeriesPaint(1, Color.RED);
    renderer.setSeriesItemLabelGenerator(0, new RainItemLabelGenerator(
            StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, Depth.getDefaultFormatter()));
    StandardCategoryToolTipGenerator ttgen = new StandardCategoryToolTipGenerator(
            StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, Depth.getDefaultFormatter());
    rainPlot.getRenderer().setSeriesToolTipGenerator(0, ttgen);

    NumberFormat etFormatter = (NumberFormat) Depth.getDefaultFormatter().clone();
    etFormatter.setMaximumFractionDigits(etFormatter.getMaximumFractionDigits() + 1);
    renderer.setSeriesItemLabelGenerator(1, new RainItemLabelGenerator(
            StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, etFormatter));
    ttgen = new StandardCategoryToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
            etFormatter);
    rainPlot.getRenderer().setSeriesToolTipGenerator(1, ttgen);

    rainPlot.setRangeAxis(valueAxis);
    rainPlot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_90);

    dataTable = new TableView();

    TableColumn<RainItem, Integer> hourColumn = new TableColumn<>(HOUR_ROW_KEY);
    hourColumn.setCellValueFactory(new PropertyValueFactory(HOUR_ROW_KEY));
    dataTable.getColumns().add(hourColumn);

    TableColumn<RainItem, Depth> rainfallColumn = new TableColumn<>("Rainfall");
    rainfallColumn.setCellValueFactory(new PropertyValueFactory(RAIN_ROW_KEY));
    dataTable.getColumns().add(rainfallColumn);

    TableColumn<RainItem, Depth> etColumn = new TableColumn<>(ET_ROW_KEY);
    etColumn.setCellValueFactory(new PropertyValueFactory(ET_ROW_KEY));
    dataTable.getColumns().add(etColumn);

    this.setTabContents(chartViewer, dataTable);
}

From source file:com.bdb.weather.display.current.Hygrometer.java

private ChartViewer createChartElements() {
    humidityPlot.addLayer(//  ww w.j  a  va2s. c  om
            new DialBackground(new GradientPaint(0.0f, 0.0f, Color.LIGHT_GRAY, 100.0f, 0.0f, Color.blue)));
    StandardDialScale scale = new StandardDialScale(Humidity.MIN_HUMIDITY.get(), Humidity.MAX_HUMIDITY.get(),
            240.0, -300.0, 10.0, 9);
    scale.setTickLabelFont(scale.getTickLabelFont().deriveFont(14.0F).deriveFont(Font.PLAIN));
    scale.setTickRadius(.9);
    scale.setTickLabelFormatter(new DecimalFormat("#"));
    scale.setTickLabelOffset(.2);
    scale.setTickLabelPaint(Color.BLACK);
    humidityPlot.addScale(0, scale);
    humidityPlot.setDialFrame(new StandardDialFrame());

    DialValueIndicator valueInd = new DialValueIndicator(0);
    valueInd.setNumberFormat(new DecimalFormat("# '%rH'"));
    Color c = new Color(255, 255, 255, 0);
    valueInd.setBackgroundPaint(c);
    valueInd.setOutlinePaint(c);
    valueInd.setPaint(Color.cyan);
    humidityPlot.addLayer(valueInd);

    double angle = valueInd.getAngle();
    double radius = valueInd.getRadius();

    trendAnnotation.setPaint(Color.cyan);
    trendAnnotation.setAngle(angle);
    trendAnnotation.setRadius(radius + .1);
    humidityPlot.addLayer(trendAnnotation);

    DialPointer.Pointer pointer = new DialPointer.Pointer(0);
    humidityPlot.addPointer(pointer);

    DialCap cap = new DialCap();
    cap.setRadius(cap.getRadius() * 1.5);
    humidityPlot.setCap(cap);

    range = new StandardDialRange(Humidity.MIN_HUMIDITY.get(), Humidity.MAX_HUMIDITY.get(), Color.BLACK);
    range.setInnerRadius(.40);
    range.setOuterRadius(.45);
    range.setScaleIndex(0);
    humidityPlot.addLayer(range);

    JFreeChart chart = new JFreeChart(humidityPlot);
    chart.setBackgroundPaint(Color.GRAY);

    ChartViewer chartViewer = new ChartViewer(chart);
    //chartViewer.setMinHeight(100);
    //chartViewer.setMinWidth(100);
    //chartViewer.setMaxHeight(400);
    //chartViewer.setMaxWidth(400);
    //chartViewer.setBackground(Color.GRAY);
    return chartViewer;
}