本文链接:https://blog.youkuaiyun.com/cnds123321/article/details/89600661
目录链接:https://blog.youkuaiyun.com/cnds123321/article/details/89600379
时序图表显示的数据点在相等的时间间隔序列变化。
8.1 测试数据
让我们考虑通过使用标准 Java API 的 Math.random()产生的各种随机数。我们使用这些数字产生一个时间序列图。可以生成用于发生错误的总数在自己的网站给定的时间间隔类似的图表。
8.2 基于swing的应用
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
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 javax.swing.*;
import java.io.IOException;
public class Chart {
public static void main(String[] args) throws IOException {
//设置时序表的数据集
TimeSeries series=new TimeSeries("数据标签");
//初始化日期为2010年1月1日
Day day=new Day(1,1,2010);
double d=10000D;
//添加1000条数据
for(int i=0;i<4000;i++){
try{
//随机取出100附近的数
d=(d+Math.random())-0.5D;
//添加到时许对象
series.add(day,new Double(d));
//之后的一天
day=(Day)day.next();
}catch (Exception e){
e.printStackTrace();
}
}
XYDataset dataset=(XYDataset)new TimeSeriesCollection(series);
//实现简单的时序表,设置基本的数据
JFreeChart freeChart=ChartFactory.createTimeSeriesChart(
"数据时序表",// 图表标题
"时间",//y轴方向数据标签
"值",//x轴方向数据标签
dataset,//数据集,即要显示在图表上的数据
false,//是否显示图例
false,//是否显示提示
false//是否生成URL连接
);
//以面板显示
ChartPanel chartPanel=new ChartPanel(freeChart);
chartPanel.setPreferredSize(new java.awt.Dimension(560,400));
//创建一个主窗口来显示面板
JFrame frame=new JFrame("饼图");
frame.setLocation(500,400);
frame.setSize(600,500);
//将主窗口的内容面板设置为图表面板
frame.setContentPane(chartPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
结果展示:
8.3 创建图像
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
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 java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Chart {
public static void main(String[] args) throws IOException {
//设置时序表的数据集
TimeSeries series=new TimeSeries("数据标签");
//初始化日期为2010年1月1日
Day day=new Day(1,1,2010);
double d=10000D;
//添加1000条数据
for(int i=0;i<4000;i++){
try{
//随机取出100附近的数
d=(d+Math.random())-0.5D;
//添加到时许对象
series.add(day,new Double(d));
//之后的一天
day=(Day)day.next();
}catch (Exception e){
e.printStackTrace();
}
}
XYDataset dataset=(XYDataset)new TimeSeriesCollection(series);
//实现简单的时序表,设置基本的数据
JFreeChart freeChart=ChartFactory.createTimeSeriesChart(
"数据时序表",// 图表标题
"时间",//y轴方向数据标签
"值",//x轴方向数据标签
dataset,//数据集,即要显示在图表上的数据
false,//是否显示图例
false,//是否显示提示
false//是否生成URL连接
);
//使用输出流输出图表文件
//输出JPG文件
OutputStream os=new FileOutputStream("c:/picture.jpg");
ChartUtilities.writeChartAsJPEG(os,freeChart,500,500);
//输出PNG文件
OutputStream os_png=new FileOutputStream("c:/pictrue_png.png");
ChartUtilities.writeChartAsPNG(os_png,freeChart,500,500);
}
}
结果展示: