📄 jfreechartdemobase.java
字号:
String subtitleStr = resources.getString("meter.meter.subtitle");
String units = resources.getString("meter.meter.units");
DefaultMeterDataset data = DemoDatasetFactory.createMeterDataset();
data.setUnits(units);
MeterPlot plot = new MeterPlot(data);
plot.setMeterAngle(270);
plot.setDialType(2);
JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT,
plot, false);
// then customise it a little...
TextTitle subtitle = new TextTitle(subtitleStr, new Font("SansSerif", Font.BOLD, 12));
chart.addSubtitle(subtitle);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
return chart;
}
/**
* Creates a compass chart.
*
* @return a compass chart.
*/
public JFreeChart createCompassChart() {
// create a default chart based on some sample data...
String title = resources.getString("meter.compass.title");
String subtitleStr = resources.getString("meter.compass.subtitle");
DefaultValueDataset data = new DefaultValueDataset(new Double(45.0));
Plot plot = new CompassPlot(data);
JFreeChart chart = new JFreeChart(
title,
JFreeChart.DEFAULT_TITLE_FONT,
plot,
false
);
// then customise it a little...
TextTitle subtitle = new TextTitle(subtitleStr, new Font("SansSerif", Font.BOLD, 12));
chart.addSubtitle(subtitle);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
return chart;
}
/**
* Creates and returns a sample wind plot.
*
* @return a sample wind plot.
*/
public JFreeChart createWindPlot() {
// create a default chart based on some sample data...
String title = resources.getString("other.wind.title");
String domain = resources.getString("other.wind.domain");
String range = resources.getString("other.wind.range");
WindDataset data = DemoDatasetFactory.createWindDataset1();
JFreeChart chart = ChartFactory.createWindPlot(title, domain, range, data,
true,
false,
false);
// then customise it a little...
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0, Color.green));
return chart;
}
/**
* Creates and returns a sample scatter plot.
*
* @return a sample scatter plot.
*/
public JFreeChart createScatterPlot() {
// create a default chart based on some sample data...
String title = resources.getString("other.scatter.title");
String domain = resources.getString("other.scatter.domain");
String range = resources.getString("other.scatter.range");
XYDataset data = new SampleXYDataset2();
JFreeChart chart = ChartFactory.createScatterPlot(
title,
domain,
range,
data,
PlotOrientation.VERTICAL,
true,
true, // tooltips
false // urls
);
// then customise it a little...
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0, Color.green));
XYPlot plot = chart.getXYPlot();
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setAutoRangeIncludesZero(false);
return chart;
}
/**
* Creates and returns a sample line chart.
*
* @return a line chart.
*/
public JFreeChart createLineChart() {
// create a default chart based on some sample data...
String title = resources.getString("other.line.title");
String domain = resources.getString("other.line.domain");
String range = resources.getString("other.line.range");
CategoryDataset data = DemoDatasetFactory.createCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart(title, domain, range, data,
PlotOrientation.VERTICAL,
true,
true,
false);
// then customise it a little...
chart.setBackgroundImage(JFreeChart.INFO.getLogo());
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.green));
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundAlpha(0.65f);
CategoryAxis axis = plot.getDomainAxis();
axis.setVerticalCategoryLabels(true);
return chart;
}
/**
* Creates and returns a sample vertical XY bar chart.
*
* @return a sample vertical XY bar chart.
*/
public JFreeChart createVerticalXYBarChart() {
// create a default chart based on some sample data...
String title = resources.getString("other.xybar.title");
String domain = resources.getString("other.xybar.domain");
String range = resources.getString("other.xybar.range");
TimeSeriesCollection data = DemoDatasetFactory.createTimeSeriesCollection1();
data.setDomainIsPointsInTime(false);
JFreeChart chart = ChartFactory.createXYBarChart(
title,
domain,
range,
data,
PlotOrientation.VERTICAL,
true,
false,
false
);
// then customise it a little...
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0, Color.blue));
XYItemRenderer renderer = chart.getXYPlot().getRenderer();
renderer.setToolTipGenerator(new TimeSeriesToolTipGenerator());
return chart;
}
/**
* Creates and returns a sample XY chart with null data.
*
* @return a chart.
*/
public JFreeChart createNullXYPlot() {
// create a default chart based on some sample data...
String title = resources.getString("test.null.title");
String domain = resources.getString("test.null.domain");
String range = resources.getString("test.null.range");
XYDataset data = null;
JFreeChart chart = ChartFactory.createXYLineChart(
title, domain, range, data,
PlotOrientation.VERTICAL,
true,
true,
false
);
// then customise it a little...
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0, Color.red));
return chart;
}
/**
* Creates a sample XY plot with an empty dataset.
*
* @return a sample XY plot with an empty dataset.
*/
public JFreeChart createXYPlotZeroData() {
// create a default chart based on some sample data...
String title = resources.getString("test.zero.title");
String domain = resources.getString("test.zero.domain");
String range = resources.getString("test.zero.range");
XYDataset data = new EmptyXYDataset();
JFreeChart chart = ChartFactory.createXYLineChart(
title, domain, range, data,
PlotOrientation.VERTICAL,
true,
true,
false
);
// then customise it a little...
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0, Color.red));
return chart;
}
/**
* Creates and returns a sample time series chart that will be displayed in a scroll pane.
*
* @return a sample time series chart.
*/
public JFreeChart createTimeSeriesChartInScrollPane() {
// create a default chart based on some sample data...
String title = resources.getString("test.scroll.title");
String domain = resources.getString("test.scroll.domain");
String range = resources.getString("test.scroll.range");
String subtitleStr = resources.getString("test.scroll.subtitle");
XYDataset data = DemoDatasetFactory.createTimeSeriesCollection2();
JFreeChart chart = ChartFactory.createTimeSeriesChart(title, domain, range, data,
true,
true,
false);
// then customise it a little...
TextTitle subtitle = new TextTitle(subtitleStr, new Font("SansSerif", Font.BOLD, 12));
chart.addSubtitle(subtitle);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.gray));
return chart;
}
/**
* Creates and returns a sample bar chart with just one series.
*
* @return a sample bar chart.
*/
public JFreeChart createSingleSeriesBarChart() {
// create a default chart based on some sample data...
String title = resources.getString("test.single.title");
String domain = resources.getString("test.single.domain");
String range = resources.getString("test.single.range");
String subtitle1Str = resources.getString("test.single.subtitle1");
String subtitle2Str = resources.getString("test.single.subtitle2");
CategoryDataset data = DemoDatasetFactory.createSingleSeriesCategoryDataset();
JFreeChart chart = ChartFactory.createBarChart(title, domain, range, data,
PlotOrientation.HORIZONTAL,
true,
true,
false);
chart.addSubtitle(new TextTitle(subtitle1Str));
chart.addSubtitle(new TextTitle(subtitle2Str));
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0, Color.red));
return chart;
}
/**
* Displays an XY chart that is periodically updated by a background thread. This is to
* demonstrate the event notification system that automatically updates charts as required.
*
* @return a chart.
*/
public JFreeChart createDynamicXYChart() {
String title = resources.getString("test.dynamic.title");
String domain = resources.getString("test.dynamic.domain");
String range = resources.getString("test.dynamic.range");
SampleXYDataset data = new SampleXYDataset();
JFreeChart chart = ChartFactory.createXYLineChart(
title, domain, range, data,
PlotOrientation.VERTICAL,
true,
true,
false
);
SampleXYDatasetThread update = new SampleXYDatasetThread(data);
Thread thread = new Thread(update);
thread.start();
return chart;
}
/**
* Creates and returns a sample overlaid chart.
* <P>
* Note: with the introduction of multiple secondary datasets in JFreeChart version 0.9.10,
* the overlaid chart facility has been removed. You can achieve the same results using
* a regular XYPlot with multiple datasets.
*
* @return an overlaid chart.
*/
public JFreeChart createOverlaidChart() {
// create a default chart based on some sample data...
String title = this.resources.getString("combined.overlaid.title");
String subtitleStr = this.resources.getString("combined.overlaid.subtitle");
String domainAxisLabel = this.resources.getString("combined.overlaid.domain");
String rangeAxisLabel = this.resources.getString("combined.overlaid.range");
// create high-low and moving average dataset
HighLowDataset highLowData = DemoDatasetFactory.createHighLowDataset();
// make an overlaid plot
ValueAxis domainAxis = new DateAxis(domainAxisLabel);
NumberAxis rangeAxis = new NumberAxis(rangeAxisLabel);
rangeAxis.setAutoRangeIncludesZero(false);
XYItemRenderer renderer1 = new HighLowRenderer();
renderer1.setToolTipGenerator(new HighLowToolTipGenerator());
XYPlot plot = new XYPlot(highLowData, domainAxis, rangeAxis, renderer1);
// overlay a moving average dataset
XYDataset maData = MovingAverage.createMovingAverage(
highLowData,
" (Moving Average)",
5 * 24 * 60 * 60 * 1000L,
5 * 24 * 60 * 60 * 1000L
);
plot.setSecondaryDataset(0, maData);
XYItemRenderer renderer2 = new StandardXYItemRenderer();
renderer2.setToolTipGenerator(new TimeSeriesToolTipGenerator("d-MMM-yyyy", "0.00"));
plot.setSecondaryRenderer(0, renderer2);
// make the top level JFreeChart object
JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
// then customise it a little...
TextTitle subtitle = new TextTitle(subtitleStr, new Font("SansSerif", Font.BOLD, 12));
chart.addSubtitle(subtitle);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
return chart;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -