首页 > 想在JSP页面中用jfreechart画两条曲线图应该怎么做?

想在JSP页面中用jfreechart画两条曲线图应该怎么做?

我在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" %>
    
<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>昨天主机CPU利用情况</title>
    <link type="text/css" href="style.css" rel="stylesheet">
    </head>
    <body>
        
    <%
    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;
    %>

    <img src="<%= URL %>" width="1000px" height="600px" style="margin-top:2em;display:block;margin-left:auto;margin-right:auto">
    <br>
    <p style="margin-left:auto;margin-right:auto;width:7em"><a href="login_success.jsp">返回主页面</a></p>
    </body>
</html>

MySQL里数据表如下:

请大家帮帮我,谢谢了。

【热门文章】
【热门文章】