Jfreechart 小记
来源:互联网 发布:云计算的机遇和挑战 编辑:程序博客网 时间:2024/05/16 16:11
package org.jfree.chart.line;
import java.awt.Color;
import javax.swing.JPanel;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.axis.SymbolAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.renderer.xy.XYSplineRenderer;
import org.jfree.data.RangeType;
import org.jfree.data.time.Minute;
import org.jfree.data.time.RegularTimePeriod;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
/**
*
* A demo showing a line chart drawn using spline curves.
*/
public class TemperatureChart extends ApplicationFrame {
private static float[] TemperatureData;
private static float nodata;
/**
* Creates a new instance of the demo application.
*
* @param title the frame title.
*/
public TemperatureChart(String title,float[] temperature,float nodata) {
super(title);
this.TemperatureData = temperature;
this.nodata = nodata;
JPanel content = createDemoPanel();
content.setPreferredSize(new java.awt.Dimension(300, 500));
getContentPane().add(content);
}
/**
* Creates a panel for the demo (used by SuperDemo.java).
*
* @return A panel.
*/
public static JPanel createDemoPanel() {
//轴线数值为给定数值
SymbolAxis ySymbolAxis1 = new SymbolAxis("hPa", new String[] {
"1000", "950", "920", "850", "780", "700", "620", "500", "400", "300",
"250", "200", "150", "100", "70", "50", "30", "20", "10", "5"
});
//给定数值的索引起始数值 0,1,2,3......
ySymbolAxis1.setUpperMargin(0.0D);
// create plot...
NumberAxis xAxis = new NumberAxis("K");
xAxis.setAutoRangeIncludesZero(false);
/*
*
NumberAxis yAxis = new NumberAxis("hPa");
//数值反转
yAxis.setInverted(true);
yAxis.setRangeAboutValue(100, 1);
*/
// 自定义轴线数值
/*
yAxis.setAutoTickUnitSelection(false);
double unit=50d;//刻度的长度
NumberTickUnit ntu= new NumberTickUnit(unit);
yAxis .setTickUnit(ntu);
yAxis.setTickLabelPaint(Color.blue);
XYSplineRenderer renderer1 = new XYSplineRenderer();
*/
//设置线条样式
XYLineAndShapeRenderer renderer1 = new XYLineAndShapeRenderer(true, true);
//打好地基 plot:地基情节
XYPlot plot = new XYPlot(createTemperatureDataset(), ySymbolAxis1, xAxis, renderer1);
plot.setDomainPannable(true);
//添加第轴线
NumberAxis numberaxis1 = new NumberAxis("湿度");
//注意轴线给定索引 以便数值找到要标准轴线
plot.setRangeAxis(10, numberaxis1);
//调整轴线位置
plot.setRangeAxisLocation(1, AxisLocation.TOP_OR_LEFT);
XYDataset xydataset1 = createHumidityDataset();
//数据 标记索引
plot.setDataset(10, xydataset1);
// plot.mapDatasetToDomainAxis(10, 10);
//将数值dataset 与 相应的坐标绑定。 索引
plot.mapDatasetToRangeAxis(10, 10);
// plot.setRenderer(10, new XYSplineRenderer());
//创建线条样式
plot.setRenderer(10,new XYLineAndShapeRenderer(true, true));
//美化界面
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
plot.setAxisOffset(new RectangleInsets(4, 4, 4, 4));
//图 横或纵
plot.setOrientation(PlotOrientation.HORIZONTAL);
JFreeChart chart = new JFreeChart("MODIS",
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
// create and return the chart panel...
ChartUtilities.applyCurrentTheme(chart);
ChartPanel chartPanel = new ChartPanel(chart, false);
return chartPanel;
}
/**
* 索引 使其一一对应
* @return
*/
private static XYDataset createTemperatureDataset()
{
XYSeries xyseries = new XYSeries("温度");
if(TemperatureData[0] != nodata){
xyseries.add(19,TemperatureData[0]);
}
if(TemperatureData[1] != nodata){
xyseries.add(18,TemperatureData[1]);
}
if(TemperatureData[2] != nodata){
xyseries.add(17,TemperatureData[2]);
}
if(TemperatureData[3] != nodata){
xyseries.add(16,TemperatureData[3]);
}
if(TemperatureData[4] != nodata){
xyseries.add(15,TemperatureData[4]);
}
if(TemperatureData[5] != nodata){
xyseries.add(14,TemperatureData[5]);
}
if(TemperatureData[6] != nodata){
xyseries.add(13,TemperatureData[6]);
}
if(TemperatureData[7] != nodata){
xyseries.add(12,TemperatureData[7]);
}
if(TemperatureData[8] != nodata){
xyseries.add(11,TemperatureData[8]);
}
if(TemperatureData[9] != nodata){
xyseries.add(10,TemperatureData[9]);
}
if(TemperatureData[10] != nodata){
xyseries.add(9,TemperatureData[10]);
}
if(TemperatureData[11] != nodata){
xyseries.add(8,TemperatureData[11]);
}
if(TemperatureData[12] != nodata){
xyseries.add(7,TemperatureData[12]);
}
if(TemperatureData[13] != nodata){
xyseries.add(6,TemperatureData[13]);
}
if(TemperatureData[14] != nodata){
xyseries.add(5,TemperatureData[14]);
}
if(TemperatureData[15] != nodata){
xyseries.add(4,TemperatureData[15]);
}
if(TemperatureData[16] != nodata){
xyseries.add(3,TemperatureData[16]);
}
if(TemperatureData[17] != nodata){
xyseries.add(2,TemperatureData[17]);
}
if(TemperatureData[18] != nodata){
xyseries.add(1,TemperatureData[18]);
}
if(TemperatureData[19] != nodata){
xyseries.add(0,TemperatureData[19]);
}
XYSeriesCollection xyseriescollection = new XYSeriesCollection();
xyseriescollection.addSeries(xyseries);
return xyseriescollection;
}
/**
*索引 使其一一对应 数据暂时未读 假数据代替
* 同数据
* @return
*/
private static XYDataset createHumidityDataset()
{
XYSeries xyseries = new XYSeries("湿度");
xyseries.add(0, 800);
xyseries.add(1, 900);
xyseries.add(2, 700);
xyseries.add(3, 800);
xyseries.add(4, 600);
xyseries.add(5, 300);
xyseries.add(6, 200);
xyseries.add(7, 100);
xyseries.add(8, 40);
xyseries.add(9, 10);
XYSeriesCollection xyseriescollection = new XYSeriesCollection();
xyseriescollection.addSeries(xyseries);
return xyseriescollection;
}
/**
* float[] to new String[]
* @return
*/
private static String[] getXData(){
String[] xAxis = new String[TemperatureData.length];
for(int i=0;i<xAxis.length;i++){
if(TemperatureData[i] == nodata){
xAxis[i] = "";//String.valueOf(TemperatureData[i]);
}else{
xAxis[i] = String.valueOf(TemperatureData[i]);
}
}
String[] x = new String[] {
xAxis[0],xAxis[1],xAxis[2],xAxis[3],xAxis[4],xAxis[5],xAxis[6],xAxis[7],xAxis[8],xAxis[9],
xAxis[10],xAxis[11],xAxis[12],xAxis[13],xAxis[14],xAxis[15],xAxis[16],xAxis[17],xAxis[18],xAxis[19]
};
return x;
}
/**
* Creates and returns a sample dataset. The data was randomly
* generated.
*
* @return a sample dataset.
*/
private static XYDataset createSampleData() {
XYSeries series = new XYSeries("温度");
// 5, 10, 20, 30, 50, 70, 100, 150, 200, 250, 300, 400, 500, 620, 700, 780, 850, 920, 950, 1000 hPa
//值不全为空时执行
if(TemperatureData[0] != nodata){
series.add(5,TemperatureData[0]);
}
if(TemperatureData[1] != nodata){
series.add(10,TemperatureData[1]);
}
if(TemperatureData[2] != nodata){
series.add(20,TemperatureData[2]);
}
if(TemperatureData[3] != nodata){
series.add(30,TemperatureData[3]);
}
if(TemperatureData[4] != nodata){
series.add(50,TemperatureData[4]);
}
if(TemperatureData[5] != nodata){
series.add(70,TemperatureData[5]);
}
if(TemperatureData[6] != nodata){
series.add(100,TemperatureData[6]);
}
if(TemperatureData[7] != nodata){
series.add(150,TemperatureData[7]);
}
if(TemperatureData[8] != nodata){
series.add(200,TemperatureData[8]);
}
if(TemperatureData[9] != nodata){
series.add(250,TemperatureData[9]);
}
if(TemperatureData[10] != nodata){
series.add(300,TemperatureData[10]);
}
if(TemperatureData[11] != nodata){
series.add(400,TemperatureData[11]);
}
if(TemperatureData[12] != nodata){
series.add(500,TemperatureData[12]);
}
if(TemperatureData[13] != nodata){
series.add(620,TemperatureData[13]);
}
if(TemperatureData[14] != nodata){
series.add(700,TemperatureData[14]);
}
if(TemperatureData[15] != nodata){
series.add(780,TemperatureData[15]);
}
if(TemperatureData[16] != nodata){
series.add(850,TemperatureData[16]);
}
if(TemperatureData[17] != nodata){
series.add(920,TemperatureData[17]);
}
if(TemperatureData[18] != nodata){
series.add(950,TemperatureData[18]);
}
if(TemperatureData[19] != nodata){
series.add(1000,TemperatureData[19]);
}
XYSeriesCollection result = new XYSeriesCollection(series);
return result;
}
/**
* The starting point for the regression demo.
*
* @param args ignored.
*/
public static void main(String args[]) {
// TemperatureChart appFrame = new TemperatureChart("JFreeChart: TemperatureChart.java",null,null);
// appFrame.pack();
// RefineryUtilities.centerFrameOnScreen(appFrame);
// appFrame.setVisible(true);
}
}
- Jfreechart 小记
- JFreeChart
- JFreeChart
- JFreeChart
- JFreeChart
- JFreeChart
- JFreeChart
- JFreeChart
- jfreechart
- JFreeChart
- JFreeChart
- jfreechart
- jfreeChart
- jfreechart
- JFreeChart
- jfreechart
- JFreeChart
- JFreeChart
- 10种排序算法总结
- 限定UITextField输入的字数
- WPS for Linux 软件包下载
- NUMBER ( precision, scale)
- “手把手教你学linux驱动开发”OK6410系列之01---模块编程
- Jfreechart 小记
- 使用iTextSharp在Asp.Net中操作PDF系列文章 目录
- Intent 和 Intent Filter
- tomcat日志暴涨,操作出现奇怪错误的问题
- 可扩展的序列化协议
- howto: Compiling checkinstall for Fedora 13/15/17 x86_64, and for RHEL6 x86_64
- Android 4.0 Alarm机制浅析
- uva11000
- Unconnected Stored Procedure transformation