jfreechart在jsp中画图方式

这个问题一直困扰我好久,今天算是稍微找到一点解决思路了,在网上搜了好多列子,大部分的都是用servlet来实现画图,偶然找到一个列子用的是org.jfree.chart.servlet.ServletUtilities,来解决图片从后台传到前台的方法,下面是源码。

1.在MyEclipse中创建一个名为jfreechart的Web工程。将下载的JFreeChart1.0.6下lib目录下的jar包拷贝到WebRoot/WEB-INF/lib目录下。另外还需要在web.xml文件中增加如下配置:

    <servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/DisplayChart</url-pattern>
    </servlet-mapping>

2.在WebRoot目录下建立bar目录,用来存放柱状图的各个例子。首先在该目录下建立一个sample1.jsp文件,让我们来看一个简单的柱状图的例子,修改后的sample1.jsp的内容如下所示:

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory,
        org.jfree.chart.JFreeChart,
        org.jfree.chart.plot.PlotOrientation,
        org.jfree.chart.servlet.ServletUtilities,
        org.jfree.data.category.DefaultCategoryDataset,        
        java.awt.Font,  
        org.jfree.chart.ChartFrame,  
        org.jfree.chart.StandardChartTheme, 
        org.jfree.chart.axis.CategoryAxis,  
        org.jfree.chart.labels.StandardCategoryItemLabelGenerator,  
        org.jfree.chart.plot.CategoryPlot,      
        org.jfree.chart.renderer.category.BarRenderer, 
        org.jfree.data.category.CategoryDataset,  
        java.io.FileOutputStream,
        java.io.IOException,
        java.io.PrintWriter,
        org.jfree.chart.ChartUtilities,
        org.jfree.chart.axis.ValueAxis,
        org.jfree.chart.title.LegendTitle,
        org.jfree.chart.title.TextTitle"
%>
<%
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    dataset.addValue(610, "广州", "猪肉");
    dataset.addValue(220, "广州", "牛肉");
    dataset.addValue(530, "广州", "鸡肉");
    dataset.addValue(340, "广州", "鱼肉");
    
    JFreeChart mBarChart = ChartFactory.createBarChart3D("肉类销量统计图",
    "肉类",
    "销量",
    dataset,
    PlotOrientation.VERTICAL,
    false,
    false,
    false);    
    
                //图表标题设置  
            TextTitle mTextTitle = mBarChart.getTitle();  
            mTextTitle.setFont(new Font("黑体", Font.BOLD, 20));  
            //mBarChart.setTitle(new TextTitle("学校人员分布图",new Font("黑体", Font.BOLD, 20)));  
            //图表图例设置  
            LegendTitle mLegend = mBarChart.getLegend();  
            if(mLegend != null)  
                mLegend.setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
            //mBarChart.getLegend().setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
            //设置柱状图轴  
            CategoryPlot mPlot = (CategoryPlot)mBarChart.getPlot();  
              
            //x轴  
            CategoryAxis mDomainAxis = mPlot.getDomainAxis();  
            //设置x轴标题的字体  
            mDomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
            //设置x轴坐标字体  
            mDomainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  
            //y轴  
            ValueAxis mValueAxis = mPlot.getRangeAxis();  
            //设置y轴标题字体  
            mValueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
            //设置y轴坐标字体  
            mValueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  
            //柱体显示数值  
            BarRenderer mRenderer= new BarRenderer();  
            mRenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());  
            mRenderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 10));  
            mRenderer.setItemLabelsVisible(true);  
            mPlot.setRenderer(mRenderer);  
    
            String filename = ServletUtilities.saveChartAsPNG(mBarChart, 800, 400, null, session);
            String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=800 height=400 border=0 usemap="#<%= filename %>">

浏览器端输入http://127.0.0.1:8080/jfreechart/sample1.jsp即可看到输出的图片。

 

转载于:https://www.cnblogs.com/yuhuameng/p/3979608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 下载JFreeChart:首先从JFreeChart官网下载JFreeChart。请确保您下载的是最新版本。 2. 在Eclipse创建项目:在Eclipse创建一个新项目。右键单击项目文件夹并选择“新建文件夹”。将文件夹命名为“lib”(或其他您想要的名称),然后单击“完成”。 3. 将JFreeChart库添加到项目:将JFreeChart库文件(.jar文件)复制到您创建的“lib”文件夹。在Eclipse,右键单击您的项目并选择“属性”>“Java构建路径”>“库”。单击“添加外部JAR”并选择您刚刚添加到“lib”文件夹JFreeChart库文件。单击“确定”。 4. 在Eclipse使用JFreeChart:现在您已经将JFreeChart库添加到Eclipse项目,您可以在Java代码使用JFreeChart。使用以下代码示例来创建一个简单的折线图: ```Java import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.data.category.DefaultCategoryDataset; public class MyChart { public static void main(String[] args) { //创建数据集 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(12, "Sales", "Jan"); dataset.setValue(8, "Sales", "Feb"); dataset.setValue(6, "Sales", "Mar"); dataset.setValue(9, "Sales", "Apr"); dataset.setValue(15, "Sales", "May"); dataset.setValue(10, "Sales", "Jun"); //创建折线图 JFreeChart chart = ChartFactory.createLineChart( "Sales Report", //图表标题 "Month", //X轴标题 "Sales", //Y轴标题 dataset //数据集 ); //显示图表 ChartFrame frame = new ChartFrame("My Chart", chart); frame.pack(); frame.setVisible(true); } } ``` 完成后,您应该能够在Eclipse运行此代码并看到一个简单的折线图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值