`

JFreeChart生成图表中文乱码问题解决方案

 
阅读更多

在使用JFreeChart生成图表时,可能会出现中文乱码,下面给出两种解决方法。

1、设置主题样式(推荐方法)

主题样式是在建立图表之前进行设置,JFreeChart图表一般包括3个部分:Title(图表标题)、Plot(图表主体)、Legend(图表图例),主题是统一对这三个部分进行字体设置

  1. //创建主题样式  
  2. StandardChartTheme mChartTheme = new StandardChartTheme("CN");  
  3. //设置标题字体  
  4. mChartTheme.setExtraLargeFont(new Font("黑体", Font.BOLD, 20));  
  5. //设置轴向字体  
  6. mChartTheme.setLargeFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
  7. //设置图例字体  
  8. mChartTheme.setRegularFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
  9. //应用主题样式  
  10. ChartFactory.setChartTheme(mChartTheme);  


实例:

  1. import java.awt.Font;  
  2. import org.jfree.chart.ChartFactory;  
  3. import org.jfree.chart.ChartFrame;  
  4. import org.jfree.chart.JFreeChart;  
  5. import org.jfree.chart.StandardChartTheme;  
  6. import org.jfree.chart.plot.PlotOrientation;  
  7. import org.jfree.data.category.CategoryDataset;  
  8. import org.jfree.data.category.DefaultCategoryDataset;  
  9.   
  10. public class Bar {  
  11.     public static void main(String[] args) {  
  12.         CategoryDataset mDataset = GetDataset();          
  13.           
  14.         //创建主题样式  
  15.         StandardChartTheme mChartTheme = new StandardChartTheme("CN");  
  16.         //设置标题字体  
  17.         mChartTheme.setExtraLargeFont(new Font("黑体", Font.BOLD, 20));  
  18.         //设置轴向字体  
  19.         mChartTheme.setLargeFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
  20.         //设置图例字体  
  21.         mChartTheme.setRegularFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
  22.         //应用主题样式  
  23.         ChartFactory.setChartTheme(mChartTheme);  
  24.         ///////////////以上主题设置必须位于创建图表函数之前才能生效////////////  
  25.         JFreeChart mBarChart = ChartFactory.createBarChart3D(  
  26.                 "学校人员分布图",  //图表标题  
  27.                 "类型",       //横轴(目录轴)标签  
  28.                 "数量",           //纵轴(数值轴)标签  
  29.                 mDataset,       //数据集  
  30.                 PlotOrientation.VERTICAL,   //图表方向  
  31.                 true,           //是否显示图例  
  32.                 true,           //是否生成提示工具  
  33.                 false);         //是否生成url连接  
  34.         ChartFrame mChartFrame = new ChartFrame("学校人员分布图", mBarChart);  
  35.         mChartFrame.pack();  
  36.         mChartFrame.setVisible(true);  
  37.     }  
  38.     public static CategoryDataset GetDataset()  
  39.     {  
  40.         DefaultCategoryDataset mDataset = new DefaultCategoryDataset();       
  41.         mDataset.addValue(2000"清华大学""本科生");  
  42.         mDataset.addValue(1500"清华大学""研究生");  
  43.         mDataset.addValue(1000"清华大学""博士生");  
  44.         mDataset.addValue(900"清华大学""讲师");  
  45.         mDataset.addValue(800"清华大学""副教授");  
  46.         mDataset.addValue(300"清华大学""教授");  
  47.         mDataset.addValue(600"清华大学""行政人员");  
  48.         mDataset.addValue(400"清华大学""管理人员");                
  49.         return mDataset;  
  50.     }  
  51.   
  52. }  

2、对乱码的字体分别进行设置

一般Title和Legend的设置方法比较单一:

  1. //图表标题设置  
  2.         TextTitle mTextTitle = mBarChart.getTitle();  
  3.         mTextTitle.setFont(new Font("黑体", Font.BOLD, 20));  
  4.           
  5.         //图表图例设置  
  6.         LegendTitle mLegend = mBarChart.getLegend();  
  7.         if(mLegend != null)  
  8.             mLegend.setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15));  
  9.           

简洁的方式还可以这样:

  1. //图表标题设置  
  2.         mBarChart.setTitle(new TextTitle("学校人员分布图",new Font("黑体", Font.BOLD, 20)));  
  3.         //图表图例设置  
  4.         mBarChart.getLegend().setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15));  

Plot对应不同的图表,它的设置方法不同。

柱状图:

先取得CategoryPlot的对象,再分别设置x轴和y轴的坐标字体以及标题字体。x轴使用CategoryAxis,y轴使用ValueAxis

  1. //设置柱状图轴  
  2.         CategoryPlot mPlot = (CategoryPlot)mBarChart.getPlot();  
  3.         //x轴  
  4.         CategoryAxis mDomainAxis = mPlot.getDomainAxis();  
  5.         //设置x轴标题的字体  
  6.         mDomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
  7.         //设置x轴坐标字体  
  8.         mDomainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  
  9.         //y轴  
  10.         ValueAxis mValueAxis = mPlot.getRangeAxis();  
  11.         //设置y轴标题字体  
  12.         mValueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
  13.         //设置y轴坐标字体  
  14.         mValueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  

饼图:

饼图没有x轴和y轴,所以不用设置,需要设置的是饼图上指示比例的标签的字体

  1. PiePlot mChartPlot = (PiePlot)mChart.getPlot();  
  2. LabelFont(new Font("宋体", Font.CENTER_BASELINE, 15));  

时序图:

时序图有x轴和y轴,所以Plot的设置与柱状图基本相同,只是时序图声明的Plot类型为XYPlot,柱状图为CateGoryPlot

  1. //设置柱状图轴  
  2.         XYPlot mPlot = (XYPlot)mTimeChart.getPlot();  
  3.         //x轴  
  4.         ValueAxis mDomainAxis = mPlot.getDomainAxis();  
  5.         //设置x轴标题的字体  
  6.         mDomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
  7.         //设置x轴坐标字体  
  8.         mDomainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  
  9.         //y轴  
  10.         ValueAxis mValueAxis = mPlot.getRangeAxis();  
  11.         //设置y轴标题字体  
  12.         mValueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
  13.         //设置y轴坐标字体  
  14.         mValueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15)); 
分享到:
评论

相关推荐

    linux下JFreeChart生成的图片乱码,可以用这个字体

    在Linux环境下,使用Java的JFreeChart库生成图表时,可能会遇到一个问题,即图表中的文本出现乱码。这是因为JFreeChart默认使用的字体可能在Linux系统中不被支持,或者编码设置不正确。解决这个问题的关键在于引入...

    jfreechart中文乱码问题解决方案

    在使用JFreeChart库生成图表时,可能会遇到中文乱码的问题,这主要是因为JFreeChart默认的字体不支持中文显示。解决这个问题的关键在于为图表的各个部分(如标题、轴标签、图例等)设置合适的中文支持字体。下面将...

    jfreechart部署linux服务器生成图片乱码解决方案

    标题 "jfreechart部署在Linux服务器上生成图片乱码的解决方案" 涉及到的主要知识点是关于Java图形库JFreeChart在Linux环境中的使用,特别是解决中文字符乱码的问题。JFreeChart是一个广泛使用的开源Java库,它允许...

    jfreechart-1.0.13中文乱码,数值显示等问题

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D和3D图表,如柱状图、折线图和...在你的项目中,可以参考提供的文件“jfreechart”来查看具体的实现方式,这将有助于你更好地理解和应用这些解决方案。

    JFreeChart在linux下生成图表时中文乱码

    JFreeChart在linux下生成图表时中文乱码,原因是JRE没有找到对应中文字库,解决方法如下:

    JFreechart 在linux下不显示及中文乱码问题

    标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...

    JFreeChart中文乱码问题解决

    本文将深入探讨如何解决JFreeChart中的中文乱码问题,并通过具体的代码示例来演示解决方案。 #### 一、问题背景 JFreeChart是一款开源的Java图表库,它能够生成各种类型的图表,如折线图、柱状图、饼图等。但在...

    jfreechart Linux服务器图片中文乱码解决方案(亲测,已解决多台服务器)

    通过以上步骤,你应该能够成功解决JFreeChart在Linux服务器上生成图片时的中文乱码问题。值得注意的是,这种方法不仅适用于JFreeChart,还适用于其他依赖于Java运行环境显示中文字符的程序。在实际操作中,应根据...

    Linux下的JFreeChart中文乱码口口解决

    JFreeChart是一个强大的Java库,它提供了一套完整的解决方案来创建各种图表,如饼图、柱状图、线图等。然而,由于编码问题,当图表中包含中文字符时,可能会显示为方框或无法识别的字符。解决这个问题需要对Java的...

    jfreechart linux乱码解决方案

    通过以上步骤,你应该能够在Linux环境中成功解决JFreeChart的中文乱码问题。记住,关键在于正确配置字体和确保Java能够找到并使用这些字体。在实际开发过程中,根据具体环境和需求,可能需要进行一些额外的调整。

    jfreechart形成报表文字乱码解决

    在使用JFreeChart库生成报表时,可能会遇到中文字符出现乱码的问题,这通常是由于字体设置不正确导致的。JFreeChart是一个强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、时序图和折线图等。在处理中文...

    JFreeChart无中文乱码版本

    这个特定的版本,被称为“JFreeChart无中文乱码版本”,特别优化了解决在处理中文字符时可能出现的乱码问题,使得在中文环境下使用JFreeChart变得更加友好。 JFreeChart支持多种类型的图表,包括但不限于柱状图、...

    解决jfreechart中文乱码方案整理.doc

    因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...

    又见乱码——CentOS下JFreeChart生成图片的中文乱码

    标题"又见乱码——CentOS下JFreeChart生成图片的中文乱码"所指出的问题,是开发者在使用JFreeChart库在CentOS操作系统上生成包含中文字符的图表时遇到的典型问题。JFreeChart是一个强大的Java库,用于生成高质量的...

    解决jfreechart中文乱码

    在使用Java的JFreeChart库绘制包含中文字符的图表...通过以上方法,可以有效地解决jfreechart在显示中文时出现的乱码问题。在实际开发中,根据具体需求和环境进行适当调整,确保中文字符在图表中得到清晰、正确的显示。

    JFreechart源码以及linux环境下中文乱码的解决

    通过以上分析,我们可以看到,理解和使用JFreeChart源码不仅可以解决在Linux环境下中文乱码的问题,还能帮助我们更好地控制和定制图表的显示效果。对于需要在Java项目中展示数据或者创建复杂图表的开发者来说,深入...

    jfreechart图表的完整工程例子(含中文乱码处理和百分比)

    本工程例子展示了如何利用JFreeChart创建包含中文内容的图表,并解决中文乱码问题以及饼图中显示百分比的问题。 ### 一、中文乱码处理 在Java程序中,处理中文字符时常常会遇到乱码问题。这通常是由于字符编码设置...

    ireport jfreechart 圖表 欄位 linux 亂碼問題1

    iReport JFreeChart 图表乱码问题解决方案 在使用 iReport 和 JFreeChart 生成报表时,可能会遇到图表中文乱码的问题, especially on Linux systems. 这篇文章将详细介绍这个问题的解决方案。 问题描述 当我们...

    JFreeChart乱码解决.doc

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,...如果你遇到的特定问题仍未解决,可以搜索相关的解决方案,或者参考社区中的帖子,如文中提到的博客文章,那里通常会汇总各种场景下的解决方案。

Global site tag (gtag.js) - Google Analytics