Jfreechart解决乱码问题(原创+引用)

文章來源於 sina 煙鬼博客  寫於2009-09-30 09:48

原创:我用的是最新版本1.0.16
 设置字体,在网上找的有的根本就不行,所以自己就尝试着自己去试,最后试出几种解决办法,希望能对大家有用:
JFreeChart chart;
对于乱码,下面的语句请尝试就一定可以解决:

//设置图表的标题
chart.getTitle().setFont(new Font("隶书", Font.ITALIC, 15));
//设置X轴下方标题
chart.getXYPlot().getDomainAxis().setLabelFont(new Font("隶书", Font.ITALIC, 15));
//设置X轴坐标字体
chart.getXYPlot().getDomainAxis().setTickLabelFont(new Font("隶书", Font.ITALIC, 15));
//设置Y轴左方标题
chart.getXYPlot().getRangeAxis().setLabelFont(new Font("隶书", Font.ITALIC, 15));
//设置Y轴坐标字体
chart.getXYPlot().getRangeAxis().setTickLabelFont(new Font("隶书", Font.ITALIC, 15));
//设置X轴下方方框里面的字体
chart.getLegend().setItemFont(new Font("隶书", Font.ITALIC, 15));
//对于饼状图有下列情况,可以设置饼状内容的字体
//要对它进行强制类型转换
PiePlot pieplot = (PiePlot) chart.getPlot();
pieplot.setLabelFont(new Font("宋体", 0, 12));

 

 

---------------------------------------------------------==========================

下面这样也可以解决一些:

 

 

JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图",
"肉类",
"销量",
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
TextTitle textTitle = chart.getTitle();
       textTitle.setFont(new Font("黑体",Font.PLAIN, 20));  
      
      CategoryPlot plot = chart.getCategoryPlot();//获得图表区域对象
      CategoryAxis domainAxis = plot.getDomainAxis();
   
       domainAxis.setVisible(true);
       plot.setDomainAxis(domainAxis);
       ValueAxis rAxis = plot.getRangeAxis();
       
       domainAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
      
       domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,15));        
      
       rAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
      
       rAxis.setLabelFont(new Font("黑体",Font.PLAIN,15));

 

-=-=-=-=============================================
饼状图形乱码解决:

JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false);
chart.getLegend().setItemFont(new Font("宋体", 0, 12));
PiePlot pieplot = (PiePlot) chart.getPlot();
pieplot.setLabelFont(new Font("宋体", 0, 12));
pieplot.setNoDataMessageFont(new Font("宋体", 0, 12));
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体",Font.PLAIN, 20));

 

 

-----------------------------------------==========================================
一下是引用:http://blog.sina.com.cn/s/blog_5dc12c490100d911.html

org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类
org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持
org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴(RangeAxis)和横轴(DomainAxis)
org.jfree.chart.render.XXXRender:负责如何显示一个图表对象
org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类.


1、DataSet的类型
PieDataset接口,实现类是DefaultPieDataset,用来作为饼图的数据源
CatagoryDataset接口,实现类是DefaultCatagoryDataset,用来作为柱状图的数据源(当然,接口IntervalXYDataset也可作为它的数据源)
CatagoryDataset接口和XYDataset接口可以作为折线图的数据源
XYDataset接口,实现类是TimeSeriesCollection,作为时间序列图的数据源
2、ChartFactory工厂类,由它来产生JFreeChart对象
3、Plot对象,通过JFreeChart对象得到,然后通过Plot对象对图形内部进行进一步调整(例如,折线的类型等),当然,对于不同类型的图形,有不同的实现子类。

4.中文乱码问题

  1.          plot.getDomainAxis().setLabelFont(font); //x轴外围字体
  2.          plot.getDomainAxis().setTickLabelFont(font); //x轴刻度字体
  3.          plot.getRangeAxis().setLabelFont(font);  //y轴外围字体
  4.          plot.getRangeAxis().setTickLabelFont(font); //y轴刻度字体
  5.          jfreechart.getTitle().setFont(new Font("宋体", Font.CENTER_BASELINE, 20)); //标题字体
  6.          jfreechart.getLegend().setItemFont(font); //设置最底下方框内的字体

5.//   设置图表的背景颜色  

 

 

  chart.setBackgroundPaint(new   Color(11,   95,   141));  

    
  //   自定义图表的标题的字体和颜色  

 TextTitle   title   =   chart.getTitle();  
  title.setFont(new   Font("汉真广标",   Font.BOLD,   25));  
  title.setPaint(Color.YELLOW);  

 

//   获得图表对象的引用  
  

PiePlot   plot   =   (PiePlot)   chart.getPlot();  
GradientPaint   bg   =   new   GradientPaint(0,50,new Color(248,253,255),0,250,new Color(205,237,252));  
plot.setBackgroundPaint(bg);  

 

   
  //   设置饼图各组成部分的绘制颜色  

 Color   color[]   =   new   Color[lossTitle.length];  
  color[0]   =   new   Color(99,99,0);  
  color[1]   =   new   Color(255,169,66);  
  color[2]   =   new   Color(255,0,66);  
  for(int i  =  0;i < color.length;i++)  
  {  
  plot.setSectionPaint(i,   color[i]);  
  //   分离显示饼图中表示"JAVA"的那部分圆弧  
  if   (lossTitle[i].equals("损耗电量"))  
  plot.setExplodePercent(i,   0.15);  
  }  
  //   设置是否使用反锯齿功能  
  //chart.setAntiAlias(false); 
  //   设置饼图标签的绘制字体  
  plot.setLabelFont(new   Font("Courier   New",   Font.PLAIN,   12));  
  //   设置饼图的外观为椭圆形还是正圆形  
  plot.setCircular(false);  
  //   结束自定义图表绘制的相关属性  
  ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());  
   
  // 设置图片生成格式  
  String fileName = ServletUtilities.saveChartAsPNG(chart,   width,   height,   info,   session);  
   
  //  设置图片生成路径  
  String graphURL = request.getContextPath()   +   "/servlet/DisplayChart?filename="   +   fileName;

 

 

=----------=-=---------------------------------------------=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值