List of usage examples for org.jfree.chart.fx ChartViewer ChartViewer
public ChartViewer(JFreeChart chart)
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; }