📄 mytimechartdemo.java
字号:
/* ===========================================================
* JFreeChart时序图的示例 by:daocaorenwwt
* ===========================================================
*/
import java.awt.Color;
import java.text.SimpleDateFormat;
import java.io.*;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
/**
* An example of a time series chart. For the most part, default settings are
* used, except that the renderer is modified to show filled shapes (as well as
* lines) at each data point.
*/
public class MyTimeChartDemo {
public MyTimeChartDemo(){
}
/**
* Creates a chart.
*
* @param dataset a dataset.
*
* @return A chart.
*/
public JFreeChart createChart(XYDataset dataset) {
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"日供电量曲线", // 图表标题
"日期", // X轴标签
"万KWH", // Y轴标签
dataset, // data
true, // create legend?
true, // generate tooltips?
false // generate URLs?
);
chart.setBackgroundPaint(Color.white);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
XYItemRenderer r = plot.getRenderer();
if (r instanceof XYLineAndShapeRenderer) {
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
renderer.setDefaultShapesVisible(true);
renderer.setDefaultShapesFilled(true);
}
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("dd"));
return chart;
}
/**
* Creates a dataset, consisting of two series of monthly data.
*
* @return the dataset.
*/
public XYDataset createDataset() {
TimeSeries s1 = new TimeSeries("04年", Day.class);
s1.add(new Day(1,4,2004), 4674.5);
s1.add(new Day(2,4,2004), 4779.5);
s1.add(new Day(3,4,2004), 4687.6);
s1.add(new Day(4,4,2004), 4361.1);
s1.add(new Day(5,4,2004), 4118.4);
s1.add(new Day(6,4,2004), 3827.2);
s1.add(new Day(7,4,2004), 3484.1);
s1.add(new Day(9,4,2004), 2910.0);
s1.add(new Day(10,4,2004), 2745.5);
s1.add(new Day(11,4,2004), 2695.6);
s1.add(new Day(12,4,2004), 2856.2);
s1.add(new Day(13,4,2004), 3098.5);
s1.add(new Day(14,4,2004), 3603.5);
s1.add(new Day(15,4,2004), 3917.7);
s1.add(new Day(16,4,2004), 4324.0);
s1.add(new Day(17,4,2004), 4421.9);
s1.add(new Day(18,4,2004), 4519.8);
s1.add(new Day(19,4,2004), 4431.4);
s1.add(new Day(20,4,2004), 4496.7);
s1.add(new Day(21,4,2004), 4852.0);
s1.add(new Day(22,4,2004), 4828.2);
s1.add(new Day(23,4,2004), 4676.8);
s1.add(new Day(24,4,2004), 4946.9);
s1.add(new Day(25,4,2004), 5029.6);
s1.add(new Day(26,4,2004), 4855.4);
s1.add(new Day(27,4,2004), 4568.2);
TimeSeries s2 = new TimeSeries("05年", Day.class);
s2.add(new Day(1,4,2004), 3628.8285);
s2.add(new Day(2,4,2004), 3943.22208);
s2.add(new Day(3,4,2004), 4057.8252);
s2.add(new Day(4,4,2004), 4122.91566);
s2.add(new Day(5,4,2004), 3941.45254);
s2.add(new Day(6,4,2004), 4110.31018);
s2.add(new Day(7,4,2004), 4003.93248);
s2.add(new Day(8,4,2004), 3670.95464);
s2.add(new Day(9,4,2004), 4093.27078);
s2.add(new Day(10,4,2004), 4207.70892);
s2.add(new Day(11,4,2004), 4222.36044);
s2.add(new Day(12,4,2004), 4163.91696);
s2.add(new Day(13,4,2004), 4168.91424);
s2.add(new Day(14,4,2004), 3978.06244);
s2.add(new Day(15,4,2004), 3643.0874);
s2.add(new Day(16,4,2004), 4063.8361);
s2.add(new Day(17,4,2004), 4104.4031);
s2.add(new Day(18,4,2004), 4050.06692);
s2.add(new Day(19,4,2004), 4094.12786);
s2.add(new Day(20,4,2004), 4170.1921);
s2.add(new Day(21,4,2004), 3926.819136);
s2.add(new Day(22,4,2004), 3761.116284);
s2.add(new Day(23,4,2004), 4076.93746);
s2.add(new Day(24,4,2004), 4080.55942);
s2.add(new Day(25,4,2004), 4103.47564);
s2.add(new Day(26,4,2004), 4192.1167);
s2.add(new Day(27,4,2004), 4152.39814);
s2.add(new Day(28,4,2004), 3949.27422);
s2.add(new Day(29,4,2004), 3949.27422);
s2.add(new Day(30,4,2004), 3949.27422);
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.setDomainIsPointsInTime(true);
return dataset;
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(String[] args) {
MyTimeChartDemo myChr = new MyTimeChartDemo();
XYDataset dataset = myChr.createDataset();
JFreeChart chart = myChr.createChart(dataset);
try{
File jpFile = new File("D:\\img\\MyTimeChartDemo.jpg");
File jpFile2 = new File("d:\\img\\MyTimeChartDemo.png");
ChartUtilities.saveChartAsJPEG(jpFile,chart,400,400);
ChartUtilities.saveChartAsPNG(jpFile2,chart,400,400);
}
catch(Exception e){
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -