チャートのjfreechart
5742 ワード
この前、チャートについて知りましたが、まずJAVAにとって、いいのはjfreechartです。具体的な紹介については、これを紹介しません。ここで私は小さい例を二つ作りました。それぞれのヒストグラムは具体的に参考にしましょう。インターネットにはjfreechartに関する資料が多いです。
コードは以下の通りです
以下のように設定します
コードは以下の通りです
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
request.setCharacterEncoding("UTF-8");
CreateDate creat = new CreateDate();
CategoryDataset dateSet= creat.getDataSet();
JFreeChart chart = ChartFactory.createBarChart3D(" ", null, null, dateSet, PlotOrientation.VERTICAL,true,true,true);
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer3D renderer = new BarRenderer3D();
// org.jfree.chart.axis.CategoryAxis
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLowerMargin(0.1);// 10%
domainAxis.setUpperMargin(0.1);// 10
domainAxis.setCategoryLabelPositionOffset(10);// (10 )
domainAxis.setCategoryMargin(0.2);// 20%
//
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setUpperMargin(0.1);// ( 10%)
renderer.setBaseOutlinePaint(Color.red);
renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());//
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
renderer.setBaseItemLabelsVisible(true);
renderer.setSeriesPaint(0, new Color(0, 255, 255));//
renderer.setSeriesOutlinePaint(0,Color.green);//
renderer.setSeriesPaint(1, new Color(0, 255, 0));//
renderer.setSeriesOutlinePaint(1,Color.red);//
renderer.setItemMargin(0.1);// 10%
// ,
domainAxis.setTickLabelFont(new Font(" ",Font.PLAIN,15));
/*------ X ------------*/
domainAxis.setLabelFont(new Font(" ",Font.PLAIN,15));
/*------ Y -----------*/
rangeAxis.setTickLabelFont(new Font(" ",Font.PLAIN,15));
/*------ Y ------------*/
rangeAxis.setLabelFont(new Font(" ",Font.PLAIN,15));
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font(" ",Font.BOLD,12));//12
renderer.setItemLabelPaint(Color.black);//
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);//
//
plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);// ( ) ( )
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); // ( ) ( )
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font(" ", Font.PLAIN, 20));
chart.setTitle(textTitle);
chart.getLegend().setItemFont(new Font(" ", Font.PLAIN, 12));
//
Shape shape = new Rectangle(20, 10);
ChartEntity entity = new ChartEntity(shape);
StandardEntityCollection coll = new StandardEntityCollection();
coll.add(entity);
int width = 500;
int height = 300;
ChartRenderingInfo info = new ChartRenderingInfo(coll);
PrintWriter pw = response.getWriter();
// , ChartRenderingInfo Map
// ChartUtilities.saveChartAsPNG(pw, chart, width, height, info);
String filename = ServletUtilities.saveChartAsPNG(chart, width , height, info, session);
ChartUtilities.writeImageMap(pw, filename, info, false);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
String strimg= ChartUtilities.getImageMap("map0", info);
request.setAttribute("strimg", strimg);
System.out.println(request.getAttribute("strimg"));
request.setAttribute("graphURL", graphURL);
RequestDispatcher dispatcher = request.getRequestDispatcher("/mobile2.jsp");
dispatcher .forward(request, response);
もちろんここでxmlの配置が必要です。つまり、上に設計されたgraphh URLです。 部分以下のように設定します
<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>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
JSPページに必要 <%=request.getAttribute("strimg") %>// // ,
<p><img src="${graphURL }" width="500" height="300" border="0" usemap="#map0"> </p>