java - 想在JSP页面中用jfreechart画两条曲线图应该怎么做?
PHP中文网
PHP中文网 2017-04-17 17:38:43
[Java讨论组]

我在JSP页面上想用jfreechart画图显示CPU及内存的利用率图片如下所示,里面的数据是从MySQL数据库里得到的,但是我只找到了一条线的画法,我想把内存的情况同时显示在这张图上应该怎么做?

JSP代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.awt.Font,java.awt.Rectangle,java.io.File,java.io.IOException,java.sql.DriverManager,java.sql.ResultSet,
    org.jfree.chart.ChartFactory,org.jfree.chart.ChartFrame,org.jfree.chart.ChartUtilities,org.jfree.chart.JFreeChart,org.jfree.chart.axis.CategoryAxis,
    org.jfree.chart.axis.NumberAxis,org.jfree.chart.axis.NumberTickUnit,org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
    org.jfree.chart.plot.CategoryPlot,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.renderer.category.LineAndShapeRenderer,
    org.jfree.data.category.DefaultCategoryDataset,java.sql.Connection,java.sql.SQLException,java.sql.Statement,org.jfree.chart.servlet.ServletUtilities
    " %>
<%@ page import="com.time.Time" %>
    


    
    
    昨天主机CPU利用情况
    
    
    
        
    <%
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    
    String driverName = "com.mysql.jdbc.Driver";
    String username = "root";
    String password = "19931101";
    String dbName = "cpu";
    String tableName = "tb3";
    String url = "jdbc:mysql://localhost/"+dbName+"?user="+username+"&password="+password;
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    
    Connection con = DriverManager.getConnection(url);
    Statement stmt = con.createStatement();

    Time time = new Time();
    String t1 = time.getYesterdaymorning();
    String t2 = time.getYesterdaynight();
    String sql="SELECT * FROM tb3 WHERE time>='"+t1+"'AND time<='"+t2+"'";
    ResultSet rs=stmt.executeQuery(sql);
     while (rs.next()) {
         dataset.addValue(rs.getInt(1), "", rs.getString(3).substring(11,16));
     }
     rs.close();
    

    JFreeChart chart = ChartFactory.createLineChart("用户CPU利用率", // 主标题的名称
            "时间",// X轴的标签
            "利用率(%)",// Y轴的标签
            dataset, // 图标显示的数据集合
            PlotOrientation.VERTICAL, // 图像的显示形式(水平或者垂直)
            true,// 是否显示子标题
            true,// 是否生成提示的标签
            true); // 是否生成URL链接
    // 处理图形上的乱码
    // 处理主标题的乱码
    chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
    // 处理子标题乱码
    chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
    // 获取图表区域对象
    CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
    // 获取X轴的对象
    CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();
    categoryAxis.setMaximumCategoryLabelLines(2);
    // 获取Y轴的对象
    NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
    // 处理X轴上的乱码
    categoryAxis.setTickLabelFont(new Font("Times New Roman", Font.BOLD, 10));
    // 处理X轴外的乱码
    categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理Y轴上的乱码
    numberAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理Y轴外的乱码
    numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理Y轴上显示的刻度,以10作为1格
    numberAxis.setAutoTickUnitSelection(false);
    NumberTickUnit unit = new NumberTickUnit(10);
    numberAxis.setTickUnit(unit);
    // 获取绘图区域对象
    LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) categoryPlot
            .getRenderer();
    // 在图形上显示数字
    lineAndShapeRenderer
            .setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    lineAndShapeRenderer.setBaseItemLabelsVisible(true);
    lineAndShapeRenderer
            .setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
    // 在图形上添加转折点(使用小矩形显示)
    Rectangle shape = new Rectangle(10, 10);
    lineAndShapeRenderer.setSeriesShape(0, shape);
    lineAndShapeRenderer.setSeriesShapesVisible(0, true);

    String fileName = "";
    try {
        fileName = ServletUtilities.saveChartAsPNG(chart, 600, 500, null, session);
    } catch (IOException e) {
        e.printStackTrace();
    }
    String URL = request.getContextPath() + "/DisplayChart?filename=" + fileName;
    %>

    
    

返回主页面

MySQL里数据表如下:

请大家帮帮我,谢谢了。

PHP中文网
PHP中文网

认证0级讲师

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号