`
xcgh
  • 浏览: 75267 次
  • 来自: ...
社区版块
存档分类
最新评论

转载JfreeChart学习总结

阅读更多

自己最近学习了JfreeChart的使用,觉得这个冬冬的功能非常强大,总结一下。主要介绍JfreeChart生成图片的几种方式

先从网上找点介绍。
一、简介
WW 的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别,虽然对于数据获取、业务处理等方面基本类似,但是最大的差别在于用户界面。为了能在web浏览器上显示要求用户界面使用 HTML以及图片的方式来展现数据,而传统的一些利用操作系统本身的控件来开发的用户界面无法适应琳琅满目的客户端,因此在这里也变得无能为力。回到本文的题目上来,为了创建一个可以在web浏览器上查看到图表一般有两种做法:第一种就是使用applet利用java本身对图形的支持来显示一个图表;第二 种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式 只适合一些局域网的应用,而对于因特网的环境就显得不太适合。因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB的图表。
JFreeChart 项目简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普 通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。

二、JFreeChart获取。

JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如下:
1.JFreeReport :报表解决工具
2.JFreeChart:Java 图形解决方案(Application/Applet/Servlet/Jsp)
3.JCommon :JFreeReport和JFreeChart的公共类库
4.JFreeDesigner :JFreeReport的报表设计工具
我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取),
获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍)
我们以当前最新版本:jfreechart-1.0.1.zip为例子进行说明。

三、JFreeChart配置安装
1 、解压jfreechart-1.0.1.zip.zip到指定位置,其中source是jfreechart的源码,jfreechart-1.0.1-demo.jar 是例子程序,可以先运行一下看看各种效果,就知道他的nb之处了。
2 、为了配置成功,我们需要关注的文件有如下三个:
设置classpath。加入下面三个jar包。
jfreechart-1.0.1.jar 、jcommon-1.0.0.jar、gnujaxp.jar
加上第三个jar包有时web.xml会报错,把它去掉就好了。
至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类
结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。如果是中文显示的时候可能依据观感需要改变源码的字体。

四、JFreeChart功能介绍
JFreeChart 目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面:
pie charts (2D and 3D) :饼图(平面和立体)
bar charts (regular and stacked, with an optional 3D effect) :柱状图
line and area charts :曲线图
scatter plots and bubble charts
time series, high/low/open/close charts and candle stick charts :时序图
combination charts :复合图
Pareto charts
Gantt charts :甘特图
wind plots, meter charts and symbol charts
wafer map charts
( 态图表,饼图(二维和三维) , 柱状图 ( 水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表)
图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联
JFreeChart 核心类库介绍:
研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形
本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究 。
核心类主要有:
org.jfree.chart.JFreeChart :图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
org.jfree.data.category.XXXDataSet: 数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类
org.jfree.chart.plot.XXXPlot :图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持
org.jfree.chart.axis.XXXAxis :用于处理图表的两个轴:纵轴和横轴
org.jfree.chart.render.XXXRender :负责如何显示一个图表对象
org.jfree.chart.urls.XXXURLGenerator: 用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator: 用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类

个人感觉JFreeChart可以满足大部分图片创建的需要,美中不足的是:对字体的设置做的不够好,特别是使用中文的时候字体很不清晰。因为这个原因建议你自己去修改他的源代码,最好使用properties文件去设置字体.还有就是文档要钱所以要多花点时间去看源代码。或多上社区.

五.开始开发
对JfreeChart有了初步了解并做好准备工作之后,开始作例子程序试验。在这里我只介绍饼图的做法,而这张图采用不同的方式进行输出,其他类型的图片可以参考jfreechart提供的例子,做法都差不多。

1) 直接生成图片

代码
  1. public class PieChartPicture {   
  2. public static void main(String[] args)    
  3. {   
  4.  PieDataset dataset = getDataSet();   
  5.  JFreeChart chart = ChartFactory.createPieChart3D(   
  6.     " 项目进度分布"// chart title   
  7.     dataset,// data   
  8.     true,// include legend   
  9.     true,   
  10.     false  
  11.    );   
  12.   PiePlot3D  plot=(PiePlot3D)chart.getPlot();   
  13.     // 图片中显示百分比:默认方式   
  14.     //plot.setLabelGenerator(new           StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT));   
  15. // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位   
  16.  plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));    
  17. // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例                   
  18.  plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));    
  19. // 设置背景色为白色    
  20. chart.setBackgroundPaint(Color.white);    
  21. // 指定图片的透明度(0.0-1.0)    
  22.  plot.setForegroundAlpha(1.0f);    
  23. // 指定显示的饼图上圆形(false)还椭圆形(true)    
  24. plot.setCircular(true);    
  25. // 设置图标题的字体    
  26. Font font = new Font(" 黑体",Font.CENTER_BASELINE,20);    
  27. TextTitle title = new TextTitle(" 项目状态分布");    
  28. title.setFont(font);     
  29. chart.setTitle(title);    
  30. FileOutputStream fos_jpg = null;    
  31. try {    
  32.      fos_jpg=new FileOutputStream("D:\\ 项目状态分布.jpg");    
  33.      ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,640,480,null);    
  34.      fos_jpg.close();    
  35. catch (Exception e) {    
  36.  }    
  37. }    
  38. private static PieDataset getDataSet() {    
  39. DefaultPieDataset dataset = new DefaultPieDataset();    
  40. dataset.setValue(" 市场前期"new Double(10));    
  41. dataset.setValue(" 立项"new Double(15));    
  42. dataset.setValue(" 计划"new Double(10));    
  43. dataset.setValue(" 需求与设计"new Double(10));    
  44. dataset.setValue(" 执行控制"new Double(35));    
  45. dataset.setValue(" 收尾"new Double(10));    
  46. dataset.setValue(" 运维",new Double(10));    
  47. return dataset;           
  48. }   
  49. }   
<script>render_code();</script>

 

2) 采用servlet和struts的action方式输出
采用这种方式输出,不用生成图片。
A .servlet输出

代码
  1. public class PieByServlet extends HttpServlet{    
  2. public void service(ServletRequest req, ServletResponse res)    
  3. throws ServletException, IOException    
  4. {    
  5.    res.setContentType("image/jpeg");    
  6.    PieDataset dataset = getDataSet();    
  7.    JFreeChart chart = ChartFactory.createPieChart3D(    
  8.    " 水果饼图"// chart title    
  9.    dataset,// data    
  10.    true// include legend    
  11.    true,    
  12.    false );    
  13.    //设置图表属性   
  14. // 输出图片    
  15.  ChartUtilities.writeChartAsJPEG(res.getOutputStream(),100,chart,800,600,null);    
  16. }   
<script>render_code();</script>
B .struts的action方式输出
只将这条语句加上try catch即可,并返回null。
代码
  1. try{          
  2. ChartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,800,600,null);    
  3.  } catch (Exception e) {    
  4. }   
  5. return null;   
<script>render_code();</script>

 

其实采用这两种方式与生成图片的方式改动并不大
加上语句response.setContentType("image/jpeg");
ChartUtilities.writeChartAsJPEG(new FileOutputStream("D:\\ 项目状态分布.jpg");,100,chart,640,480,null);
文件流改成response的输出流就可以了
hartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,800,600,null);

3)jsp+servlet+javabean方式
1. Create ChartViewer servlet

代码
  1. public class ChartViewer extends HttpServlet {    
  2. public void init() throws ServletException {   
  3. }    
  4. //Process the HTTP Get request   
  5. public void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {    
  6. // get the chart from session   
  7. HttpSession session = request.getSession();    
  8. BufferedImage chartImage = (BufferedImage) session.getAttribute("chartImage");    
  9. // set the content type so the browser can see this as a picture    
  10. response.setContentType("image/png");    
  11. // send the picture    
  12. PngEncoder encoder = new PngEncoder(chartImage, false09);    
  13. response.getOutputStream().write(encoder.pngEncode());   
  14. }    
  15. //Process the HTTP Post request    
  16. public void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {    
  17. doGet(request, response);    
  18. }    
  19. //Process the HTTP Put request    
  20. public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    
  21. }    
  22. //Clean up resources    
  23. public void destroy() { }    
  24. }   
<script>render_code();</script>

 

2. Create a servlet map in web.xml

代码
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <web-app>    
  3.  <servlet>    
  4.  <servlet-name>ChartViewer</servlet-name>    
  5.  <servlet-class>myapp.webwork.servlets.ChartViewer</servlet-class>    
  6. </servlet>    
  7. <servlet-mapping>    
  8. <servlet-name>ChartViewer</servlet-name>    
  9. <url-pattern>/servlet/ChartViewer</url-pattern>    
  10. </servlet-mapping>    
  11. </web-app>   
<script>render_code();</script>

 

3. Create a chart in a java bean (Pie3DDemo.java)

 

代码
  1. public class Pie3DDemo {    
  2. private DefaultPieDataset getDataset() {    
  3. // categories...    
  4. String[] section = new String[] { "Jan","Feb","Mar","Apr","May","Jun""Jul","Aug","Sep","Oct","Nov","Dec" };    
  5. // data...    
  6. double[] data = new double[section.length];    
  7.  for (int i = 0; i < data.length; i++) {    
  8.      data[i] = 10 + (Math.random() * 10);    
  9. }    
  10. // create the dataset...    
  11. DefaultPieDataset dataset = new DefaultPieDataset();    
  12. for (int i = 0; i < data.length; i++) {    
  13.        dataset.setValue(section[i], data[i]);    
  14. }    
  15. return dataset;    
  16. }    
  17. public String getChartViewer(HttpServletRequest request, HttpServletResponse response) {    
  18.  DefaultPieDataset dataset = getDataset();    
  19. // create the chart...    
  20.  JFreeChart chart = ChartFactory.createPie3DChart(    
  21.   "Pie3D Chart Demo",  // chart title    
  22.   dataset,             // data    
  23.   true,                // include legend    
  24.   true,    
  25.   false    
  26.  );    
  27. // set the background color for the chart...    
  28. chart.setBackgroundPaint(Color.cyan);    
  29. PiePlot plot = (PiePlot) chart.getPlot();    
  30. plot.setNoDataMessage("No data available");    
  31. // set drilldown capability...    
  32.  plot.setURLGenerator(new StandardPieURLGenerator("Bar3DDemo.jsp","section"));    
  33. plot.setLabelGenerator(null);    
  34. // OPTIONAL CUSTOMISATION COMPLETED.    
  35. ChartRenderingInfo info = null;    
  36. HttpSession session = request.getSession();    
  37. try {    
  38. //Create RenderingInfo object    
  39.  response.setContentType("text/html");    
  40.  info = new ChartRenderingInfo(new StandardEntityCollection());    
  41.  BufferedImage chartImage = chart.createBufferedImage(640400, info);    
  42. // putting chart as BufferedImage in session,    
  43. // thus making it available for the image reading action Action.    
  44. session.setAttribute("chartImage", chartImage);    
  45. PrintWriter writer = new PrintWriter(response.getWriter());    
  46. ChartUtilities.writeImageMap(writer, "imageMap", info);    
  47. writer.flush();    
  48. catch (Exception e) { }    
  49.   
  50. String pathInfo = "http://";    
  51. pathInfo += request.getServerName();    
  52. int port = request.getServerPort();    
  53. pathInfo += ":"+String.valueOf(port);    
  54. pathInfo += request.getContextPath();    
  55. String chartViewer = pathInfo + "/servlet/ChartViewer";    
  56. return chartViewer;    
  57. }   
<script>render_code();</script>

 

6. 页面

代码
  1.     
  2. <html>    
  3. <head>    
  4. <title>Pie Chart Demo</title>    
  5. </head>    
  6. <jsp:useBeanidjsp:useBeanid="myChart"scope="session"class="myapp.webwork.beans.Pie3DDemo" />    
  7. <body>    
  8. <h2>Pie Chart Demo</h2>    
  9. <%String chartViewer = myChart.getChartViewer(request, response);%>    
  10. <img src="<%=chartViewer%>" border=0 usemap="#imageMap">    
  11. </body>    
  12. </html>   
<script>render_code();</script>

 

4)采用工具类DisplayChart和DisplayChart(jfreechart的servlet)输出
我用了上面的几个方法输出图片,发现页面里只能输出一个图片,
不过下面的方法可以输出多个图片,而且是几种方式中最简单的一个,推荐使用。

这种方式和上面的三种比较类似,是将javabean里的生成图片的方法写的一个工具类ChartUtil里面。

1 .添加工具类ChartUtil
public class ChartUtil {
// 产生时间序列图,返回图片名称

代码
  1. public  static String generatePieChart(DefaultPieDataset dataset,String title,int width,int height,HttpSession session, PrintWriter pw) {    
  2.   
  3. String filename = null;    
  4.  try {    
  5.  if (session != null)    
  6.  {    
  7. ChartDeleter deleter = (ChartDeleter)session.getAttribute("JFreeChart_Deleter");    
  8.  session.removeAttribute("JFreeChart_Deleter");    
  9.  session.setAttribute("JFreeChart_Deleter", deleter);    
  10. }    
  11. JFreeChart chart = ChartFactory.createPieChart3D(    
  12. title,  // chart title    
  13. dataset, // data    
  14. true,  // include legend    
  15. true,    
  16. false );    
  17. //  Write the chart image to the temporary directory    
  18. ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());    
  19. //If the last parameter is null, the chart is a "one time"-chart and will be deleted after the first serving.    
  20. //If the last parameter is a session object, the chart remains until session time out.    
  21. filename = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);    
  22. //  Write the image map to the PrintWriter    
  23.  ChartUtilities.writeImageMap(pw, filename, info,true);    
  24.  pw.flush();    
  25. catch (Exception e) {    
  26.  System.out.println("Exception - " + e.toString());    
  27.  e.printStackTrace(System.out);    
  28.  filename = "picture_error.png"; }    
  29. return filename;    
  30. }    
  31. }   
<script>render_code();</script>

 

2、在action里统计数据,设置好数据集dataset。传到页面

3、 在页面里取出
DefaultPieDataset piedataset=(DefaultPieDataset)request.getAttribute("piedataset");
// 用ChartUtil工具类产生图片

代码
  1. String p = ChartUtil.generatePieChart(piedataset," 项目收支线图",500,300,nullnew PrintWriter(out));    
  2. String p1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + p;   
<script>render_code();</script>
通过以下方式输出
代码
  1. <td><img src="<%= p1 %>" width=500 height=300 border=0 usemap="#<%= p %>"></td>  
<script>render_code();</script>

 

4、在web.xml中添加

代码
  1. <servlet>  
  2.   <servlet-name>DisplayChart</servlet-name>  
  3.   <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>  
  4. </servlet>  
  5. <servlet-mapping>  
  6.     <servlet-name>DisplayChart</servlet-name>  
  7.     <url-pattern>/servlet/DisplayChart</url-pattern>  
  8. </servlet-mapping>  
<script>render_code();</script>

 

5) ApplicationFrame 方式

代码
  1. public class PieChartDemo1 extends ApplicationFrame {    
  2. public PieChartDemo1(String title) {    
  3. super(title);    
  4. setContentPane(createDemoPanel());    
  5. }    
  6. private static JFreeChart createChart(PieDataset dataset) {    
  7. JFreeChart chart = ChartFactory.createPieChart(    
  8. .......   
  9. return chart;    
  10. }    
  11.   
  12. public static JPanel createDemoPanel() {    
  13. JFreeChart chart = createChart(createDataset());    
  14. return new ChartPanel(chart);    
  15. }    
  16.   
  17. public static void main(String[] args) {    
  18. PieChartDemo1 demo = new PieChartDemo1("Pie Chart Demo 1");    
  19. demo.pack();    
  20. RefineryUtilities.centerFrameOnScreen(demo);    
  21. demo.setVisible(true);    
  22. }    
  23. }   
<script>render_code();</script>

 

六. 可参考资料与网址

官方网站

http://www.jfree.org/jfreechart/index.html

官方论坛

http://www.jfree.org/phpBB2/index.php

API 文档

http://www.jfree.org/jfreechart/api/gjdoc/index.html

中文API

http://blog.sina.com.cn/u/405da78d010000ap

好了,唠叨了这么多,自己写了一些,从网上找了一些,真tmd的很累啊。

JFreeChart类:
void setAntiAlias(boolean flag)    字体模糊边界
void setBackgroundImage(Image image)   背景图片
void setBackgroundImageAlignment(int alignment)  背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义)
void setBackgroundImageAlpha(float alpha)  背景图片透明度(0.0~1.0)
void setBackgroundPaint(Paint paint)   背景色
void setBorderPaint(Paint paint)   边界线条颜色
void setBorderStroke(Stroke stroke)   边界线条笔触
void setBorderVisible(boolean visible)   边界线条是否可见

-----------------------------------------------------------------------------------------------------------

TextTitle类:
void setFont(Font font)     标题字体
void setPaint(Paint paint)    标题字体颜色
void setText(String text)    标题内容

-----------------------------------------------------------------------------------------------------------

StandardLegend(Legend)类:
void setBackgroundPaint(Paint paint)   图示背景色
void setTitle(String title)    图示标题内容
void setTitleFont(Font font)    图示标题字体
void setBoundingBoxArcWidth(int arcWidth)  图示边界圆角宽
void setBoundingBoxArcHeight(int arcHeight)  图示边界圆角高
void setOutlinePaint(Paint paint)   图示边界线条颜色
void setOutlineStroke(Stroke stroke)   图示边界线条笔触
void setDisplaySeriesLines(boolean flag)  图示项是否显示横线(折线图有效)
void setDisplaySeriesShapes(boolean flag)  图示项是否显示形状(折线图有效)
void setItemFont(Font font)    图示项字体
void setItemPaint(Paint paint)    图示项字体颜色
void setAnchor(int anchor)    图示在图表中的显示位置(参数常量在Legend类中定义)

-----------------------------------------------------------------------------------------------------------

Axis类:
void setVisible(boolean flag)    坐标轴是否可见
void setAxisLinePaint(Paint paint)   坐标轴线条颜色(3D轴无效)
void setAxisLineStroke(Stroke stroke)   坐标轴线条笔触(3D轴无效)
void setAxisLineVisible(boolean visible)  坐标轴线条是否可见(3D轴无效)
void setFixedDimension(double dimension)  (用于复合表中对多坐标轴的设置)
void setLabel(String label)    坐标轴标题
void setLabelFont(Font font)    坐标轴标题字体
void setLabelPaint(Paint paint)    坐标轴标题颜色
void setLabelAngle(double angle)`   坐标轴标题旋转角度(纵坐标可以旋转)
void setTickLabelFont(Font font)   坐标轴标尺值字体
void setTickLabelPaint(Paint paint)   坐标轴标尺值颜色
void setTickLabelsVisible(boolean flag)   坐标轴标尺值是否显示
void setTickMarkPaint(Paint paint)   坐标轴标尺颜色
void setTickMarkStroke(Stroke stroke)   坐标轴标尺笔触
void setTickMarksVisible(boolean flag)   坐标轴标尺是否显示

ValueAxis(Axis)类:
void setAutoRange(boolean auto)    自动设置数据轴数据范围
void setAutoRangeMinimumSize(double size)  自动设置数据轴数据范围时数据范围的最小跨度
void setAutoTickUnitSelection(boolean flag)  数据轴的数据标签是否自动确定(默认为true)
void setFixedAutoRange(double length)   数据轴固定数据范围(设置100的话就是显示MAXVALUE到MAXVALUE-100那段数据范围)
void setInverted(boolean flag)    数据轴是否反向(默认为false)
void setLowerMargin(double margin)   数据轴下(左)边距
void setUpperMargin(double margin)   数据轴上(右)边距
void setLowerBound(double min)    数据轴上的显示最小值
void setUpperBound(double max)    数据轴上的显示最大值
void setPositiveArrowVisible(boolean visible)  是否显示正向箭头(3D轴无效)
void setNegativeArrowVisible(boolean visible)  是否显示反向箭头(3D轴无效)
void setVerticalTickLabels(boolean flag)  数据轴数据标签是否旋转到垂直
void setStandardTickUnits(TickUnitSource source) 数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false)

NumberAxis(ValueAxis)类:
void setAutoRangeIncludesZero(boolean flag)  是否强制在自动选择的数据范围中包含0
void setAutoRangeStickyZero(boolean flag)  是否强制在整个数据轴中包含0,即使0不在数据范围中
void setNumberFormatOverride(NumberFormat formatter) 数据轴数据标签的显示格式
void setTickUnit(NumberTickUnit unit)   数据轴的数据标签(需要将AutoTickUnitSelection设false)

DateAxis(ValueAxis)类:
void setMaximumDate(Date maximumDate)   日期轴上的最小日期
void setMinimumDate(Date minimumDate)   日期轴上的最大日期
void setRange(Date lower,Date upper)   日期轴范围
void setDateFormatOverride(DateFormat formatter) 日期轴日期标签的显示格式
void setTickUnit(DateTickUnit unit)   日期轴的日期标签(需要将AutoTickUnitSelection设false)
void setTickMarkPosition(DateTickMarkPosition position) 日期标签位置(参数常量在org.jfree.chart.axis.DateTickMarkPosition类中定义)

CategoryAxis(Axis)类:
void setCategoryMargin(double margin)   分类轴边距
void setLowerMargin(double margin)   分类轴下(左)边距
void setUpperMargin(double margin)   分类轴上(右)边距
void setVerticalCategoryLabels(boolean flag)  分类轴标题是否旋转到垂直
void setMaxCategoryLabelWidthRatio(float ratio)  分类轴分类标签的最大宽度

-----------------------------------------------------------------------------------------------------------

Plot类:
void setBackgroundImage(Image image)   数据区的背景图片
void setBackgroundImageAlignment(int alignment)  数据区的背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义)
void setBackgroundPaint(Paint paint)   数据区的背景图片背景色
void setBackgroundAlpha(float alpha)   数据区的背景透明度(0.0~1.0)
void setForegroundAlpha(float alpha)   数据区的前景透明度(0.0~1.0)
void setDataAreaRatio(double ratio)   数据区占整个图表区的百分比
void setOutLinePaint(Paint paint)   数据区的边界线条颜色
void setOutLineStroke(Stroke stroke)   数据区的边界线条笔触
void setNoDataMessage(String message)   没有数据时显示的消息
void setNoDataMessageFont(Font font)   没有数据时显示的消息字体
void setNoDataMessagePaint(Paint paint)   没有数据时显示的消息颜色

CategoryPlot(Plot)类:
void setDataset(CategoryDataset dataset)  数据区的2维数据表
void setColumnRenderingOrder(SortOrder order)  数据分类的排序方式
void setAxisOffset(Spacer offset)   坐标轴到数据区的间距
void setOrientation(PlotOrientation orientation) 数据区的方向(PlotOrientation.HORIZONTAL或PlotOrientation.VERTICAL)
void setDomainAxis(CategoryAxis axis)   数据区的分类轴
void setDomainAxisLocation(AxisLocation location) 分类轴的位置(参数常量在org.jfree.chart.axis.AxisLocation类中定义)
void setDomainGridlinesVisible(boolean visible)  分类轴网格是否可见
void setDomainGridlinePaint(Paint paint)  分类轴网格线条颜色
void setDomainGridlineStroke(Stroke stroke)  分类轴网格线条笔触
void setRangeAxis(ValueAxis axis)   数据区的数据轴
void setRangeAxisLocation(AxisLocation location) 数据轴的位置(参数常量在org.jfree.chart.axis.AxisLocation类中定义)
void setRangeGridlinesVisible(boolean visible)  数据轴网格是否可见
void setRangeGridlinePaint(Paint paint)   数据轴网格线条颜色
void setRangeGridlineStroke(Stroke stroke)  数据轴网格线条笔触
void setRenderer(CategoryItemRenderer renderer)  数据区的表示者(详见Renderer组)
void addAnnotation(CategoryAnnotation annotation) 给数据区加一个注释
void addRangeMarker(Marker marker,Layer layer)  给数据区加一个数值范围区域

PiePlot(Plot)类:
void setDataset(PieDataset dataset)   数据区的1维数据表
void setIgnoreNullValues(boolean flag)   忽略无值的分类
void setCircular(boolean flag)    饼图是否一定是正圆
void setStartAngle(double angle)   饼图的初始角度
void setDirection(Rotation direction)   饼图的旋转方向
void setExplodePercent(int section,double percent) 抽取的那块(1维数据表的分类下标)以及抽取出来的距离(0.0~1.0),3D饼图无效
void setLabelBackgroundPaint(Paint paint)  分类标签的底色
void setLabelFont(Font font)    分类标签的字体
void setLabelPaint(Paint paint)    分类标签的字体颜色
void setLabelLinkMargin(double margin)   分类标签与图的连接线边距
void setLabelLinkPaint(Paint paint)   分类标签与图的连接线颜色
void setLabelLinkStroke(Stroke stroke)   分类标签与图的连接线笔触
void setLabelOutlinePaint(Paint paint)   分类标签边框颜色
void setLabelOutlineStroke(Paint paint)   分类标签边框笔触
void setLabelShadowPaint(Paint paint)   分类标签阴影颜色
void setMaximumLabelWidth(double width)   分类标签的最大长度(0.0~1.0)
void setPieIndex(int index)    饼图的索引(复合饼图中用到)
void setSectionOutlinePaint(int section,Pain

分享到:
评论
2 楼 leo_soul 2010-10-08  
web应用中怎样在蜘蛛图里加入刻度呢?网上有一种加刻度的例子,不过好像不能直接在生成图片的方式里加,他是自己写个类继承了SpiderWebPlot,并且覆盖了drawLabel方法,在里边用AffineTransform等方式加入刻度。但好像只能用在application程序JPanel中加入jfreechart才可以。我使用web方式生成,在输出流写chart,还是没有刻度。
1 楼 PlayGod1984 2008-09-25  
StandardLegend想知道这个类在那个包里

相关推荐

Global site tag (gtag.js) - Google Analytics