以前一直是用JFreeChart画统计图的,不过JFreeChart画出来的图形不够精细,看起来有些模糊,今天在网上看到另外一个工具ChartDirector,这是一个商业版本的工具,不过也可以免费使用,只是在画出来的图形下面都有一条它的广告条。
      下面是它的一个柱状图的例子:

      范例程序:
 <%@page import="ChartDirector.*" %>
<%@page import="ChartDirector.*" %>
 <%
<%
 //The data for the bar chart
//The data for the bar chart

 double[] data =
double[] data =  {85, 156, 179.5, 211, 123};
{85, 156, 179.5, 211, 123};

 //The labels for the bar chart
//The labels for the bar chart

 String[] labels =
String[] labels =  {"Mon", "Tue", "Wed", "Thu", "Fri"};
{"Mon", "Tue", "Wed", "Thu", "Fri"};

 //Create a XYChart object of size 300 x 280 pixels
//Create a XYChart object of size 300 x 280 pixels
 XYChart c = new XYChart(300, 280);
XYChart c = new XYChart(300, 280);

 //Set the plotarea at (45, 30) and of size 200 x 200 pixels
//Set the plotarea at (45, 30) and of size 200 x 200 pixels
 c.setPlotArea(45, 30, 200, 200);
c.setPlotArea(45, 30, 200, 200);

 //Add a title to the chart
//Add a title to the chart
 c.addTitle("Weekly Server Load");
c.addTitle("Weekly Server Load");

 //Add a title to the y axis
//Add a title to the y axis
 c.yAxis().setTitle("MBytes");
c.yAxis().setTitle("MBytes");

 //Add a title to the x axis
//Add a title to the x axis
 c.xAxis().setTitle("Work Week 25");
c.xAxis().setTitle("Work Week 25");

 //Add a bar chart layer with green (0x00ff00) bars using the given data
//Add a bar chart layer with green (0x00ff00) bars using the given data
 c.addBarLayer(data, 0xff00).set3D();
c.addBarLayer(data, 0xff00).set3D();

 //Set the labels on the x axis.
//Set the labels on the x axis.
 c.xAxis().setLabels(labels);
c.xAxis().setLabels(labels);

 //output the chart
//output the chart
 String chart1URL = c.makeSession(request, "chart1");
String chart1URL = c.makeSession(request, "chart1");

 //include tool tip for the chart
//include tool tip for the chart
 String imageMap1 = c.getHTMLImageMap("", "", "title='{xLabel}: {value} MBytes'")
String imageMap1 = c.getHTMLImageMap("", "", "title='{xLabel}: {value} MBytes'")
 ;
    ;
 %>
%>
 <html>
<html>
 <body topmargin="5" leftmargin="5" rightmargin="0">
<body topmargin="5" leftmargin="5" rightmargin="0">
 <div style="font-size:18pt; font-family:verdana; font-weight:bold">
<div style="font-size:18pt; font-family:verdana; font-weight:bold">
 3D Bar Chart
    3D Bar Chart
 </div>
</div>
 <hr color="#000080">
<hr color="#000080">
 <a href="viewsource.jsp?file=<%=request.getServletPath()%>">
<a href="viewsource.jsp?file=<%=request.getServletPath()%>">
 <font size="2" face="Verdana">View Chart Source Code</font>
    <font size="2" face="Verdana">View Chart Source Code</font>
 </a>
</a>
 </div>
</div>
 <br>
<br>
 <img src='<%=response.encodeURL("getchart.jsp?"+chart1URL)%>'
<img src='<%=response.encodeURL("getchart.jsp?"+chart1URL)%>'
 usemap="#map1" border="0">
    usemap="#map1" border="0">
 <map name="map1"><%=imageMap1%></map>
<map name="map1"><%=imageMap1%></map>
 </body>
</body>
 </html>
</html>

 
      如果要在柱的顶部显示数值,可以调用Layer的setDataLabelFormat方法设置,范例:layer.setDataLabelFormat("{value}");
      其它的例子可以参考它的文档的说明。ChartDirector的网址:http://www.advsofteng.com
	posted on 2005-06-14 17:46 
小米 阅读(5268) 
评论(5)  编辑  收藏  所属分类: 
Java