`

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

 
阅读更多

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

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

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

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

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

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

  1. //图表标题设置
  2. TextTitlemTextTitle=mBarChart.getTitle();
  3. mTextTitle.setFont(newFont("黑体",Font.BOLD,20));
  4. //图表图例设置
  5. LegendTitlemLegend=mBarChart.getLegend();
  6. if(mLegend!=null)
  7. mLegend.setItemFont(newFont("宋体",Font.CENTER_BASELINE,15));
简洁的方式还可以这样:
  1. //图表标题设置
  2. mBarChart.setTitle(newTextTitle("学校人员分布图",newFont("黑体",Font.BOLD,20)));
  3. //图表图例设置
  4. mBarChart.getLegend().setItemFont(newFont("宋体",Font.CENTER_BASELINE,15));

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

柱状图:

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

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

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

  1. PiePlotmChartPlot=(PiePlot)mChart.getPlot();
  2. LabelFont(newFont("宋体",Font.CENTER_BASELINE,15));
时序图:

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

  1. //设置柱状图轴
  2. XYPlotmPlot=(XYPlot)mTimeChart.getPlot();
  3. //x轴
  4. ValueAxismDomainAxis=mPlot.getDomainAxis();
  5. //设置x轴标题的字体
  6. mDomainAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
  7. //设置x轴坐标字体
  8. mDomainAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,15));
  9. //y轴
  10. ValueAxismValueAxis=mPlot.getRangeAxis();
  11. //设置y轴标题字体
  12. mValueAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
  13. //设置y轴坐标字体
  14. mValueAxis.setTickLabelFont(newFont("宋体",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