?? outputchart.java
字號:
package com.mc.chart;
import java.awt.Color;
import java.awt.Image;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Date;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Hour;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class OutputChart {
private TimeSeriesCollection dataset = new TimeSeriesCollection();
private Date beginDate = null;
private Date endDate = null;
private JFreeChart chart = null;
private int twoline = 0;
public OutputChart(Date beginDate, Date endDate,int a) {
this.beginDate = beginDate;
this.endDate = new Date(beginDate.getTime() + 48 * 60 * 60 * 1000);
twoline = a;
// this.endDate = endDate;
}
public Image createChartIamge(int width, int height) {
if(twoline == 1){
chart = ChartFactory.createTimeSeriesChart("SO2排放量分析圖", "時間(時)",
"排放量", dataset, true, true, false);
}
if(twoline == 2){
chart = ChartFactory.createTimeSeriesChart("脫硫效率分析圖", "時間(時)",
"脫硫效率(%)", dataset, true, true, false);
}
chart.setBackgroundPaint(Color.white);
XYPlot xyplot = chart.getXYPlot();
xyplot.getRenderer();
DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); // 對domain
// 軸上日期顯示格式定義
dateaxis.setAutoRange(true);
dateaxis.setRange(beginDate, endDate);
dateaxis.setVerticalTickLabels(true);
dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.HOUR, 1,
new java.text.SimpleDateFormat("dd日HH時")));
ValueAxis valueaxis = xyplot.getRangeAxis();// 設(shè)置坐標(biāo)的寬度
valueaxis.setRange(0.0D, 100);
addData();
return getImage(width, height);
}
public void addData() {
if(twoline == 1){
TimeSeries series = new TimeSeries("SO2",Hour.class);
dataset.addSeries(series);
for (int i = 0; i < 48; i++) {
Date date = new Date(beginDate.getTime() + i * 60 * 60 * 1000);
int a = (int) (Math.random() * 100);
addTimeSeries(series, date, a);
}
}
if(twoline == 2){
TimeSeries series1 = new TimeSeries("標(biāo)準(zhǔn)脫硫效率",Hour.class);
dataset.addSeries(series1);
TimeSeries series = new TimeSeries("實(shí)際脫硫效率",Hour.class);
dataset.addSeries(series);
for (int i = 0; i < 48; i++) {
Date date = new Date(beginDate.getTime() + i * 60 * 60 * 1000);
int a = (int) (Math.random() * 100);
addTimeSeries(series, date, a);
addTimeSeries(series1, date, 95);
}
}
}
public void addTimeSeries(TimeSeries series, Date date, float value) {
try {
series.add(new Hour(date), value);
} catch (Exception ex) {
System.out.println(ex);
series.update(new Hour(date), value);
}
}
public Image getImage(int width, int height) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
ChartUtilities.writeChartAsPNG(os, chart, width, height, null);
Image image = ImageIO.read(new ByteArrayInputStream(os
.toByteArray()));
return image;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] str){
JFrame frame = new JFrame();
OutputChart chart = new OutputChart(new Date(),new Date(),1);
Image image = chart.createChartIamge(900,600);
ImageIcon b = new ImageIcon(image);
JLabel label = new JLabel(b);
frame.add(label,"Center");
frame.setSize(900,600);
frame.setDefaultCloseOperation(3);
frame.pack();
frame.setVisible(true);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -