JFreeChart应用(生成折线图)

1.jar包,jcommon.jar和jfreechart.jar,具体用哪个版本官网去down吧;

还有另外一个jar包,gnujaxp.jar,这个引入之后编译的时候会报错,应该是xsd校验的问题,索性直接去掉了,不影响实现。

2.具体实现:

public static void main(String [] args){  //数据源
  String[] rk = getRowKeys(bid);  double[][]data = getData(bid,rk);  String[] colKeys = getColKey();  // 准备数据    CategoryDataset dataset = createDataset(rk, data,colKeys );    // 生成JFreeChart对象    JFreeChart freeChart = createChart(dataset);    // 输出图片到浏览器    response.setContentType("image/jpeg");    OutputStream ops = response.getOutputStream();    ChartUtilities.writeChartAsJPEG(ops, freeChart, 640, 480);    ops.close();  //保存图片到本地  saveAsFile(freeChart, "yourPath", 600, 400);

}
    
private String[] getRowKeys(byte[] bid) throws PicException {
       //实现
}
private double[][] getData(byte[] bid,String [] rk){     //实现 
}
private String[] getColKey()  {
       //实现
}
public static CategoryDataset createDataset(String[] rowKeys, double[][] data,String[] colKeys) {

     return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
}

// 保存为文件
    public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {
        FileOutputStream out = null;
        try {
            File outFile = new File(outputPath);
            if (!outFile.getParentFile().exists()) {
                outFile.getParentFile().mkdirs();
            }
            out = new FileOutputStream(outputPath);
            // 保存为PNG
            //ChartUtilities.writeChartAsPNG(out, chart, 600, 400);
            // 保存为JPEG
            ChartUtilities.writeChartAsJPEG(out, chart, 600, 400);

            out.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    // do nothing
                }
            }
        }
    }
// 根据CategoryDataset创建JFreeChart对象
    public static JFreeChart createChart(CategoryDataset categoryDataset) {
        // 创建JFreeChart对象:ChartFactory.createLineChart
        JFreeChart jfreechart = ChartFactory.createLineChart("当年每月排放总量", // 标题
                "月份", // categoryAxisLabel (category轴,横轴,X轴标签)
                "数值", // valueAxisLabel(value轴,纵轴,Y轴的标签)
                categoryDataset, // dataset
                PlotOrientation.VERTICAL, true, // legend
                false, // tooltips
                false); // URLs
        // 使用CategoryPlot设置各种参数。以下设置可以省略。    //设置字体解决乱码问题
        CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
        jfreechart.getTitle().setFont(new Font("微软雅黑", Font.BOLD, 18));
        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setLabelFont(new Font("微软雅黑", Font.BOLD, 18));

        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setLabelFont(new Font("微软雅黑", Font.BOLD, 18));

        // 背景色 透明度
        plot.setBackgroundAlpha(0.5f);
        // 前景色 透明度
        plot.setForegroundAlpha(0.5f);
        // 其他设置 参考 CategoryPlot类

        return jfreechart;
    }
时间: 2024-12-30 03:20:41

JFreeChart应用(生成折线图)的相关文章

JFreeChart在制作折线图

JFreeChart在制作折线图的时候可以使用两种不同的方式 package Line; import java.awt.Color; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org

highcharts实例教程一:结合php与mysql生成折线图

Highcharts是一款纯javascript和html5编写的图表库,不仅几乎能兼容所有pc浏览器,而且对ios和android手机端的兼容 性也不错,它能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.折线图.面积图.柱状图.饼图.散点图 等多达28种不同类型的图表,还支持3D立体图表的生成,可以满足你对Web图表的任何需求 !而且Highcharts对学习者.非商业机构是免费使用的. 案例场景:要求针对技术cto网站,直观地显示一周网站pv.

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文: 默认情况下如下图 Y轴并不是从0开始,这样折现图的幅度会很大,不是正常的幅度,解决办法如下, 示例代码: window.onload = function () { var ctx = document.getElementById("canvas").getContext("2d"); window.myLine = new Chart(ctx).Line(lineChartDat

使用Highcharts生成折线图_at last

//数据库数据的读取,读取数据后数据格式的转换,还有highchart数据源的配置,伤透了脑筋. anyway,最终开张了.哈哈! 数据库连接:conn_orcale.php <?php $dbconn=oci_connect("dnc-local","dnc-local","orcl")or die("数据库连接错误"); ?> 读取数据:device_query.php <?php require 'co

快速生成折线图及代码详解

快速生成折线图时,只需要修改代码中的以下数据: 1.Y轴刻度个数:Ycounts 2.Y轴最小刻度数:YminValue 3.横坐标:数组mouth 4.标题:strTopic 5.用户数据:数组d 6.[可选]修改背景色:代码中27行改为所需要的颜色即可 完整代码: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using Sys

使用JFreeChart绘制XY折线图(工具类设计)

准备用Java写通信的仿真平台作为毕业设计,相比matlab绘图,Java绘图需要自己去写很多工具类,博主在这采用了JFreeChart的开源解决方案,摸索着自己写了一个XY折线图工具类,话不多说贴源码,源码中写了很多注释,配了一套自己用的绘图样式,需要的童鞋可以借鉴借鉴,希望对你有帮助.源代码已上传我的github上. 首先用Maven引入Jar包 <!-- Java 绘图 --> <dependency> <groupId>jfree</groupId>

python生成折线图

图形生成工具包 reportlab (下载地址:https://bitbucket.org/rptlab/reportlab/get/ddf3d4f5066a.zip) 数据地址:ftp://ftp.swpc.noaa.gov/pub/weekly/Predict.txt #! /usr/bin/env python #coding=utf-8 #sunspots_final.py from urllib import request from reportlab.graphics.shapes

echarts生成折线图

<div id="main" style="width: 100%;height:400px;"></div> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('main')); // 使用刚指定的配置项和数据显示图表. $.post('syqgeneral.do').done(function(result) { var arrDate

自定义动态生成折线图

package com.example.line; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphi