Jfreechart的基础图表用法与在web项目中调用
下面是我自己学习时测试的例子,一天就可以搞定,写的比较简单,基本的功能都有,具体的属性百度,一般的都有解答,希望能够对你们有所帮助
jar包环境
到官网https://www.wendangku.net/doc/2614933525.html,/jfreechart/下载资源包文件
将包文件放到你的项目里面,直接写java类,可以在java 类的main方法里面直接生成图片
如例子
public class BarChartDemo {
/**
* 获取一个演示用的组合数据集对象
*
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(120, "上海", "苹果");
dataset.addValue(160, "广州", "苹果");
dataset.addValue(210, "北京", "梨子");
dataset.addValue(220, "上海", "梨子");
dataset.addValue(230, "广州", "梨子");
dataset.addValue(330, "北京", "葡萄");
dataset.addValue(340, "上海", "葡萄");
dataset.addValue(340, "广州", "葡萄");
dataset.addValue(420, "北京", "香蕉");
dataset.addValue(430, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(510, "北京", "荔枝");
dataset.addValue(530, "上海", "荔枝");
dataset.addValue(510, "广州", "荔枝");
return dataset;
}
/**
* 解决图表汉字显示问题
*
* @param chart
*/
private static void processChart(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
ValueAxis rAxis = plot.getRangeAxis();
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASIN G,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
//3d时设置
/* BarRenderer3D renderer = (BarRenderer3D) plot.getRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//设置柱子上显示文字
renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);*/
//2d
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//设置柱子上显示文字
renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
}
/**
* 输出图片
*
* @param chart
*/
private static void writeChartAsImage(JFreeChart chart) { FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\test\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300, null);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos_jpg.close();
} catch (Exception e) {
}
}
}
public void createZhu(){
// 1. 得到数据
CategoryDataset dataset = getDataSet();
// 2. 构造chart
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签--横轴
"产量", // 数值轴的显示标签--纵轴
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、
true, // 是否显示图例(对于简单的柱状图必须
false, // 是否生成工具
false// 是否生成URL链接
);
// 3. 处理chart中文显示问题
processChart(chart);
// 4. chart输出图片
writeChartAsImage(chart);
// 5. chart 以swing形式输出
ChartFrame pieFrame = new ChartFrame("XXX", chart);
pieFrame.pack();
pieFrame.setVisible(true);
}
public static void main(String[] args) throws IOException { BarChartDemo demo = new BarChartDemo();
//demo.createZhu();//3d条形图
}
}
效果图如下
饼状图代码
//3D饼状图
public void createPieChart3D() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果", 250);
dataset.setValue("桔子", 350);
dataset.setValue("梨子", 200);
dataset.setValue("香蕉", 50);
dataset.setValue("荔枝", 150);
JFreeChart chart = ChartFactory.createPieChart3D("水果产量比率图", dataset,
true, true, true);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体",Font.BOLD,15));//标题设置字体
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 15));
plot.setLabelGenerator(new
StandardPieSectionLabelGenerator("{0},{1},({2})",
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
chart.getLegend().setItemFont(new Font("宋体",Font.BOLD, 15));
// 设置开始角度
plot.setStartAngle(150D);
// 设置方向为"顺时针方向"
plot.setDirection(Rotation.CLOCKWISE);
// 设置透明度,0.5F为半透明,1为不透明,0为全透明
plot.setForegroundAlpha(1F);
// 没有数据的时候显示的内容
plot.setNoDataMessage("无数据显示");
// 背景色设置
plot.setBackgroundPaint(ChartColor.WHITE);
try {
ChartUtilities.saveChartAsPNG(new
File("D:\\test\\PieChart3D.png"),
chart, 800, 500);
} catch (IOException e) {
e.printStackTrace();
}
}
//2d饼状图代码
//柱状2d柱状
public void createColumnChart() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
JFreeChart chart = ChartFactory.createBarChart("水果产量图", "水量", "产量",
dataset, PlotOrientation.VERTICAL, true, true, true);
processChart(chart);
try {
ChartUtilities.saveChartAsPNG(new
File("D:\\test\\ColumnChart.png"),
chart, 800, 500);
} catch (IOException e) {
e.printStackTrace();
}
}
2d折线图代码
//2d折线图
public void createLineChart() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(200, "上海", "苹果");
dataset.addValue(300, "广州", "苹果");
dataset.addValue(400, "北京", "梨子");
dataset.addValue(500, "上海", "梨子");
dataset.addValue(600, "广州", "梨子");
dataset.addValue(700, "北京", "葡萄");
dataset.addValue(800, "上海", "葡萄");
dataset.addValue(900, "广州", "葡萄");
dataset.addValue(800, "北京", "香蕉");
dataset.addValue(700, "上海", "香蕉");
dataset.addValue(600, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(400, "上海", "荔枝");
dataset.addValue(300, "广州", "荔枝");
JFreeChart chart = ChartFactory.createLineChart("水果产量图 ", "水果", "产量",
dataset, PlotOrientation.VERTICAL, true, true, true);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(ChartColor.WHITE); // 背景色设置
plot.setRangeGridlinePaint(ChartColor.GRAY); // 网格线色设置
CategoryAxis domainAxis = plot.getDomainAxis();
ValueAxis rAxis = plot.getRangeAxis();
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASIN G,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
LineAndShapeRenderer renderer = (LineAndShapeRenderer)
plot.getRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//设置柱子上显示文字
renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
try {
ChartUtilities.saveChartAsPNG(new
File("D:\\test\\LineChart.png"),
chart, 800, 500);
} catch (IOException e) {
e.printStackTrace();
}
}
3d折线图代码
public void createLineChart3D() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(300, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(900, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(700, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(800, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(100, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
JFreeChart chart = ChartFactory.createLineChart3D("水果产量图 ", "水果", "产量",
dataset, PlotOrientation.VERTICAL, true, true, true);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(ChartColor.WHITE); // 背景色设置
plot.setRangeGridlinePaint(ChartColor.GRAY); // 网格线色设置
CategoryAxis domainAxis = plot.getDomainAxis();
ValueAxis rAxis = plot.getRangeAxis();
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASIN G,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
domainAxis.setTickLabelFont(new Font("sans-serif",
Font.PLAIN, 11));
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//设置柱子上显示文字
renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
try {
ChartUtilities.saveChartAsPNG(new
File("D:\\test\\LineChart3D.png"),
chart, 800, 500);
} catch (IOException e) {
e.printStackTrace();
}
}
点与折线结合的图代码如下
package chart.demo02;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import https://www.wendangku.net/doc/2614933525.html,bels.StandardPieSectionLabelGenerator; import https://www.wendangku.net/doc/2614933525.html,bels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
//点状图与折线一起显示
public class pointAndLine {
public static void main(String[] args) {
JFreeChart chart = createChart(createDataset());
try {
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体",Font.BOLD,15));//标题设置字体
ChartUtilities.saveChartAsPNG(new
File("D:\\test\\pointAndLine.png"),
chart, 800, 500);
} catch (IOException e) {
e.printStackTrace();
}
}
private static XYDataset createDataset()
{
XYSeries xyseries = new XYSeries("点状图");
xyseries.add(1.0D, 1.0D);
xyseries.add(2D, 4D);
xyseries.add(3D, 3D);
xyseries.add(4D, 5D);
xyseries.add(5D, 5D);
xyseries.add(6D, 7D);
xyseries.add(7D, 7D);
xyseries.add(8D, 8D);
XYSeries xyseries1 = new XYSeries("折线图");
xyseries1.add(1.0D, 5D);
xyseries1.add(2D, 7D);
xyseries1.add(3D, 6D);
xyseries1.add(4D, 8D);
xyseries1.add(5D, 4D);
xyseries1.add(6D, 4D);
xyseries1.add(7D, 2D);
xyseries1.add(8D, 1.0D);
XYSeriesCollection xyseriescollection = new
XYSeriesCollection();
xyseriescollection.addSeries(xyseries);
xyseriescollection.addSeries(xyseries1);
return xyseriescollection;
}
private static JFreeChart createChart(XYDataset xydataset)
{
JFreeChart jfreechart = ChartFactory.createXYLineChart("点图与折线图", "X轴", "Y轴", xydataset, PlotOrientation.VERTICAL, true, true, false);
XYPlot xyplot = (XYPlot)jfreechart.getPlot();
ValueAxis valueAxis=xyplot.getDomainAxis(); //x轴
valueAxis.setLabelFont( new Font("黑体",
Font.BOLD, 12)); //x轴字体
XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();
xylineandshaperenderer.setSeriesLinesVisible(0, false);
xylineandshaperenderer.setSeriesShapesVisible(1, false);
xylineandshaperenderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
xyplot.setRenderer(xylineandshaperenderer);
NumberAxis numberaxis = (NumberAxis)xyplot.getRangeAxis();//y轴// 设置y轴上的字体
numberaxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 13));
// 设置y轴上的标题字体
numberaxis.setLabelFont(new Font("宋体", Font.PLAIN, 13));
jfreechart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 13)); //x副标题的字体
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
return jfreechart;
}
}
结果
Web项目中jsp调用
在web.xml中配置信息
1.jsp例子基础调用
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%> <%@page
import="org.jfree.chart.*,org.jfree.chart.plot.*,https://www.wendangku.net/doc/2614933525.html,be ls.*,
org.jfree.data.category.*,java.awt.*,org.jfree.ui.*,org.jfree.chart.r enderer.category.BarRenderer,
org.jfree.chart.servlet.*,org.jfree.chart.plot.PlotOrientation,java.a wt.*"%>
<%@page import="org.jfree.chart.axis.CategoryAxis"%>
<%@page import="org.jfree.chart.axis.ValueAxis"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(390, "中国", "河南");
dataset.addValue(220, "中国", "河北");
dataset.addValue(510, "中国", "辽宁");
dataset.addValue(580, "中国", "山东");
dataset.addValue(320, "中国", "山西");
dataset.addValue(410, "中国", "陕西");
JFreeChart chart = ChartFactory.createBarChart("苹果年产量统计图",
"省份",
"产量(万吨)",
dataset,
PlotOrientation.HORIZONTAL,
false,
false,
false);
chart.getTitle().setFont((new Font("宋体", Font.PLAIN, 16)));
if(chart.getLegend()!=null)
chart.getLegend().setItemFont(new Font("宋体",Font.BOLD, 14));
CategoryPlot plot = chart.getCategoryPlot();
//设置网格背景颜色
plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink);
CategoryAxis domainAxis = plot.getDomainAxis();
ValueAxis rAxis = plot.getRangeAxis();
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
//显示每个柱的数值,并修改该数值的字体属性
BarRenderer renderer = new BarRenderer();
renderer.setBaseItemLabelGenerator(new
StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题renderer.setBasePositiveItemLabelPosition(new
ItemLabelPosition(ItemLabelAnchor.OUTSIDE3,
TextAnchor.BASELINE_RIGHT));
renderer.setItemLabelAnchorOffset(20D);
plot.setRenderer(renderer);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);//
String graphURL = request.getContextPath() + "/chart?filename=" + filename;
%>
Jsp显示效果
注意ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);默认生成的图片是放到了tomcat的temp临时文件里面
如果你要自己指定文件录入,可以定义一个类继承ServletUtilities类在saveChartAsPNG方法中执行设置你的路径
如的例子
package chart.demo02;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.servlet.ServletUtilities;
public class JFChartUtils extends ServletUtilities {
private static String tempFilePrefix = "jfreechart-";
private static String tempOneTimeFilePrefix= "jfreechart-onetime-";
public static String saveChartAsPNG(String path,JFreeChart chart, int width,
int height, ChartRenderingInfo info, HttpSession session)
throws java.io.IOException {
try{
if (chart == null)
throw new IllegalArgumentException("Null 'chart' argument.");
//项目部署的绝对路径
String chartDir
="F:\\apache-tomcat-6.0.30\\webapps\\jfreeChart\\chart";
//将文件用年月日保存
createTempDir(chartDir);
String prefix = tempFilePrefix;
if (session == null)
prefix = tempOneTimeFilePrefix;
File tempFile = File.createTempFile(prefix, ".png", new
File(chartDir));
ChartUtilities.saveChartAsPNG(tempFile, chart, width, height, info);
if (session != null)
registerChartForDeletion(tempFile, session);
return tempFile.getName();
}catch(Exception ex){
ex.printStackTrace();
return"";
}
}
protected static void createTempDir(String path) {
if (path == null)
throw new RuntimeException(
"Temporary directory system property (java.io.tmpdir) is null.");
File tempDir = new File(path);
if (!tempDir.exists())
tempDir.mkdirs();
}
}
我将文件放到自己的项目jfreeChart的chart文件下面
在jsp中获取文件名称时对应的也要改
如下面
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%> <%@page
import="org.jfree.chart.*,org.jfree.chart.plot.*,https://www.wendangku.net/doc/2614933525.html,be ls.*,
org.jfree.data.category.*,java.awt.*,org.jfree.ui.*,org.jfree.chart.r enderer.category.BarRenderer,
org.jfree.chart.servlet.*,org.jfree.chart.plot.PlotOrientation,java.a wt.*"%>
<%@page import="org.jfree.chart.axis.CategoryAxis"%>
<%@page import="org.jfree.chart.axis.ValueAxis"%>
<%@page import="chart.demo02.JFChartUtils"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(390, "中国", "河南");
dataset.addValue(220, "中国", "河北");
dataset.addValue(510, "中国", "辽宁");
dataset.addValue(580, "中国", "山东");
dataset.addValue(320, "中国", "山西");
dataset.addValue(410, "中国", "陕西");
JFreeChart chart = ChartFactory.createBarChart("苹果年产量统计图",
"省份",
"产量(万吨)",
dataset,
PlotOrientation.HORIZONTAL,
false,
false,
false);
chart.getTitle().setFont((new Font("宋体", Font.PLAIN, 16)));
if(chart.getLegend()!=null)
chart.getLegend().setItemFont(new Font("宋体",Font.BOLD, 14));
CategoryPlot plot = chart.getCategoryPlot();
//设置网格背景颜色
plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink);
CategoryAxis domainAxis = plot.getDomainAxis();
ValueAxis rAxis = plot.getRangeAxis();
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
//显示每个柱的数值,并修改该数值的字体属性
BarRenderer renderer = new BarRenderer();
renderer.setBaseItemLabelGenerator(new
StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题renderer.setBasePositiveItemLabelPosition(new
ItemLabelPosition(ItemLabelAnchor.OUTSIDE3,
TextAnchor.BASELINE_RIGHT));
renderer.setItemLabelAnchorOffset(20D);
plot.setRenderer(renderer);
String filename = JFChartUtils.saveChartAsPNG(null,chart, 500, 300, null, session);//自定义的ServletUtilities
String graphURL = basePath+"chart/"+filename;//request.getContextPath() + "/chart?filename=" + filename;
%>
效果图也一样的,此时生成的文件在tomcat的chart文件下面就会有一个对应的图片。因为
图片是每刷新一次就生成一个图片,可以写个java定时(可以凌晨时,一天清理一次)类进行
清除图片