java类中生成jfreechart,返回图表的url地址代码分享
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>
java类中方法:
publicStringgetChart(Stringseries[],doublescore[][],Stringtype[],Stringname){
finalintnum=8;
DefaultCategoryDatasetdefaultcategorydataset=newDefaultCategoryDataset();
for(inti=0;i<type.length;i++){
type[i]=type[i].substring(0,(type[i].length()<num)?type[i].length():num);
}
for(intj=0;j<series.length;j++){
inti=0;
for(i=0;i<type.length;i++){
defaultcategorydataset.addValue(score[j][i],series[j],type[i]);
}
}
JFreeChartjfreechart=ChartFactory.createLineChart(name,null,null,defaultcategorydataset,PlotOrientation.VERTICAL,true,true,false);
jfreechart.getLegend().setPosition(RectangleEdge.RIGHT);
jfreechart.setBackgroundPaint(Color.white);
CategoryPlotcategoryplot=(CategoryPlot)jfreechart.getPlot();
categoryplot.setNoDataMessage("无数据可供显示!");
categoryplot.setBackgroundPaint(Color.white);
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeGridlinesVisible(true);
categoryplot.setRangeGridlinePaint(Color.gray);
categoryplot.setDomainGridlinePaint(Color.gray);
categoryplot.setBackgroundAlpha(0.8f);
Fontfont1=newFont("黑体",Font.BOLD,14);
jfreechart.getTitle().setFont(font1);
Fontfont3=newFont("隶书",Font.BOLD,12);
jfreechart.getLegend().setItemFont(font3);
CategoryAxiscategoryaxis=categoryplot.getDomainAxis();
// categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
categoryaxis.setMaximumCategoryLabelLines(10);//行数,根据需要自己设
categoryaxis.setMaximumCategoryLabelWidthRatio(0.5f);//每行宽度,这里设一个汉字宽
NumberAxisnumberaxis=(NumberAxis)categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numberaxis.setAutoRangeIncludesZero(true);
numberaxis.setRangeWithMargins(0,3);
numberaxis.setUpperMargin(0.8);////设置最高的一个Item与图片顶端的距离
numberaxis.setUpperBound(3.5);//纵坐标最大值
categoryaxis.setTickLabelFont(newFont("宋体",Font.BOLD,12));
numberaxis.setTickLabelFont(newFont("隶书",Font.BOLD,12));
Fontfont2=newFont("SimSun",Font.BOLD,16);
categoryaxis.setLabelFont(font2);
numberaxis.setLabelFont(font2);
categoryplot.setAxisOffset(newRectangleInsets(0D,0D,0D,10D));//设置曲线图与xy轴的距离
LineAndShapeRendererlineandshaperenderer=(LineAndShapeRenderer)categoryplot.getRenderer();
lineandshaperenderer.setShapesVisible(true);//数据点可见
lineandshaperenderer.setSeriesStroke(0,newBasicStroke(2.0F,1,1,1.0F,newfloat[]{
10F,6F
},0.0F));//定义series点之间的连线,这里是虚线,默认是直线
lineandshaperenderer.setSeriesStroke(1,newBasicStroke(2.0F,1,1,1.0F,newfloat[]{
6F,6F
},0.0F));
lineandshaperenderer.setBaseItemLabelsVisible(true);
lineandshaperenderer.setBaseItemLabelGenerator(newStandardCategoryItemLabelGenerator());
ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection());
StringfileName=null;
try
{
fileName=ServletUtilities.saveChartAsPNG(jfreechart,700,300,info,null);//生成图片
}
catch(IOExceptione)
{
e.printStackTrace();
}
StringgraphURL="/projectname/DisplayChart?filename="+fileName;//projectname为对应项目的路径path,一般就是项目名称
//jsp中这样使用:StringgraphURL=request.getContextPath()+"/servlet/DisplayChart?filename="+filename;
returngraphURL;//返回生成图片的地址
}
调用上述方法得到生成的chart的url:
getChart(stus,score_field,type,"总分图");
相关文章
- java 音频转为wav格式标准音频 | Java工具类
- java高级工程师面试情景题_Java高级工程师面试题III
- Java进阶:java开源商城系统源码
- java后端开发需要什么_从事Java后端开发,要学习哪些知识和技能?[通俗易懂]
- 编写java判断闰年_Java 判断闰年代码实例
- java垃圾回收机制原理_java垃圾回收的缺点
- JAVA代码审计之java反序列化
- java并发编程(2):Java多线程-java.util.concurrent高级工具
- Java连接redis的使用示例详解大数据
- 深入浅出:利用Java操作MySQL(java操作mysql)
- 代码Linux下编写Java代码的指南(linux编写java)
- Java 连接 Redis:实现数据快速传输(java连redis)
- Linux安装Java环境必备指南(linux装java)
- Java实现Redis数据写入(java写入redis)
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- 简明易懂的介绍Linux java包的25个字的文章标题:Linux Java包:开发和运行Java程序的工具(Linuxjava包)
- java扩展Hibernate注解支持java8新时间类型
- java实现根据ip地址获取地理位置的代码分享