在使用JFreeChart生成图表时,可能会出现中文乱码,下面给出两种解决方法。
1、设置主题样式(推荐方法)
主题样式是在建立图表之前进行设置,JFreeChart图表一般包括3个部分:Title(图表标题)、Plot(图表主体)、Legend(图表图例),主题是统一对这三个部分进行字体设置
- StandardChartThememChartTheme=newStandardChartTheme("CN");
- mChartTheme.setExtraLargeFont(newFont("黑体",Font.BOLD,20));
- mChartTheme.setLargeFont(newFont("宋体",Font.CENTER_BASELINE,15));
- mChartTheme.setRegularFont(newFont("宋体",Font.CENTER_BASELINE,15));
- ChartFactory.setChartTheme(mChartTheme);
实例:
- importjava.awt.Font;
- importorg.jfree.chart.ChartFactory;
- importorg.jfree.chart.ChartFrame;
- importorg.jfree.chart.JFreeChart;
- importorg.jfree.chart.StandardChartTheme;
- importorg.jfree.chart.plot.PlotOrientation;
- importorg.jfree.data.category.CategoryDataset;
- importorg.jfree.data.category.DefaultCategoryDataset;
- publicclassBar{
- publicstaticvoidmain(String[]args){
- CategoryDatasetmDataset=GetDataset();
- StandardChartThememChartTheme=newStandardChartTheme("CN");
- mChartTheme.setExtraLargeFont(newFont("黑体",Font.BOLD,20));
- mChartTheme.setLargeFont(newFont("宋体",Font.CENTER_BASELINE,15));
- mChartTheme.setRegularFont(newFont("宋体",Font.CENTER_BASELINE,15));
- ChartFactory.setChartTheme(mChartTheme);
- JFreeChartmBarChart=ChartFactory.createBarChart3D(
- "学校人员分布图",
- "类型",
- "数量",
- mDataset,
- PlotOrientation.VERTICAL,
- true,
- true,
- false);
- ChartFramemChartFrame=newChartFrame("学校人员分布图",mBarChart);
- mChartFrame.pack();
- mChartFrame.setVisible(true);
- }
- publicstaticCategoryDatasetGetDataset()
- {
- DefaultCategoryDatasetmDataset=newDefaultCategoryDataset();
- mDataset.addValue(2000,"清华大学","本科生");
- mDataset.addValue(1500,"清华大学","研究生");
- mDataset.addValue(1000,"清华大学","博士生");
- mDataset.addValue(900,"清华大学","讲师");
- mDataset.addValue(800,"清华大学","副教授");
- mDataset.addValue(300,"清华大学","教授");
- mDataset.addValue(600,"清华大学","行政人员");
- mDataset.addValue(400,"清华大学","管理人员");
- returnmDataset;
- }
- }
2、对乱码的字体分别进行设置
一般Title和Legend的设置方法比较单一:
- TextTitlemTextTitle=mBarChart.getTitle();
- mTextTitle.setFont(newFont("黑体",Font.BOLD,20));
- LegendTitlemLegend=mBarChart.getLegend();
- if(mLegend!=null)
- mLegend.setItemFont(newFont("宋体",Font.CENTER_BASELINE,15));
简洁的方式还可以这样:
- mBarChart.setTitle(newTextTitle("学校人员分布图",newFont("黑体",Font.BOLD,20)));
- mBarChart.getLegend().setItemFont(newFont("宋体",Font.CENTER_BASELINE,15));
Plot对应不同的图表,它的设置方法不同。
柱状图:
先取得CategoryPlot的对象,再分别设置x轴和y轴的坐标字体以及标题字体。x轴使用CategoryAxis,y轴使用ValueAxis
- CategoryPlotmPlot=(CategoryPlot)mBarChart.getPlot();
- CategoryAxismDomainAxis=mPlot.getDomainAxis();
- mDomainAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
- mDomainAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,15));
- ValueAxismValueAxis=mPlot.getRangeAxis();
- mValueAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
- mValueAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,15));
饼图:
饼图没有x轴和y轴,所以不用设置,需要设置的是饼图上指示比例的标签的字体
- PiePlotmChartPlot=(PiePlot)mChart.getPlot();
- LabelFont(newFont("宋体",Font.CENTER_BASELINE,15));
时序图:
时序图有x轴和y轴,所以Plot的设置与柱状图基本相同,只是时序图声明的Plot类型为XYPlot,柱状图为CateGoryPlot
- XYPlotmPlot=(XYPlot)mTimeChart.getPlot();
- ValueAxismDomainAxis=mPlot.getDomainAxis();
- mDomainAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
- mDomainAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,15));
- ValueAxismValueAxis=mPlot.getRangeAxis();
- mValueAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
- mValueAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,15));
分享到:
相关推荐
在Linux环境下,使用Java的JFreeChart库生成图表时,可能会遇到一个问题,即图表中的文本出现乱码。这是因为JFreeChart默认使用的字体可能在Linux系统中不被支持,或者编码设置不正确。解决这个问题的关键在于引入...
在使用JFreeChart库生成图表时,可能会遇到中文乱码的问题,这主要是因为JFreeChart默认的字体不支持中文显示。解决这个问题的关键在于为图表的各个部分(如标题、轴标签、图例等)设置合适的中文支持字体。下面将...
标题 "jfreechart部署在Linux服务器上生成图片乱码的解决方案" 涉及到的主要知识点是关于Java图形库JFreeChart在Linux环境中的使用,特别是解决中文字符乱码的问题。JFreeChart是一个广泛使用的开源Java库,它允许...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D和3D图表,如柱状图、折线图和...在你的项目中,可以参考提供的文件“jfreechart”来查看具体的实现方式,这将有助于你更好地理解和应用这些解决方案。
JFreeChart在linux下生成图表时中文乱码,原因是JRE没有找到对应中文字库,解决方法如下:
标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...
本文将深入探讨如何解决JFreeChart中的中文乱码问题,并通过具体的代码示例来演示解决方案。 #### 一、问题背景 JFreeChart是一款开源的Java图表库,它能够生成各种类型的图表,如折线图、柱状图、饼图等。但在...
通过以上步骤,你应该能够成功解决JFreeChart在Linux服务器上生成图片时的中文乱码问题。值得注意的是,这种方法不仅适用于JFreeChart,还适用于其他依赖于Java运行环境显示中文字符的程序。在实际操作中,应根据...
JFreeChart是一个强大的Java库,它提供了一套完整的解决方案来创建各种图表,如饼图、柱状图、线图等。然而,由于编码问题,当图表中包含中文字符时,可能会显示为方框或无法识别的字符。解决这个问题需要对Java的...
通过以上步骤,你应该能够在Linux环境中成功解决JFreeChart的中文乱码问题。记住,关键在于正确配置字体和确保Java能够找到并使用这些字体。在实际开发过程中,根据具体环境和需求,可能需要进行一些额外的调整。
在使用JFreeChart库生成报表时,可能会遇到中文字符出现乱码的问题,这通常是由于字体设置不正确导致的。JFreeChart是一个强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、时序图和折线图等。在处理中文...
这个特定的版本,被称为“JFreeChart无中文乱码版本”,特别优化了解决在处理中文字符时可能出现的乱码问题,使得在中文环境下使用JFreeChart变得更加友好。 JFreeChart支持多种类型的图表,包括但不限于柱状图、...
因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...
标题"又见乱码——CentOS下JFreeChart生成图片的中文乱码"所指出的问题,是开发者在使用JFreeChart库在CentOS操作系统上生成包含中文字符的图表时遇到的典型问题。JFreeChart是一个强大的Java库,用于生成高质量的...
在使用Java的JFreeChart库绘制包含中文字符的图表...通过以上方法,可以有效地解决jfreechart在显示中文时出现的乱码问题。在实际开发中,根据具体需求和环境进行适当调整,确保中文字符在图表中得到清晰、正确的显示。
通过以上分析,我们可以看到,理解和使用JFreeChart源码不仅可以解决在Linux环境下中文乱码的问题,还能帮助我们更好地控制和定制图表的显示效果。对于需要在Java项目中展示数据或者创建复杂图表的开发者来说,深入...
本工程例子展示了如何利用JFreeChart创建包含中文内容的图表,并解决中文乱码问题以及饼图中显示百分比的问题。 ### 一、中文乱码处理 在Java程序中,处理中文字符时常常会遇到乱码问题。这通常是由于字符编码设置...
iReport JFreeChart 图表乱码问题解决方案 在使用 iReport 和 JFreeChart 生成报表时,可能会遇到图表中文乱码的问题, especially on Linux systems. 这篇文章将详细介绍这个问题的解决方案。 问题描述 当我们...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,...如果你遇到的特定问题仍未解决,可以搜索相关的解决方案,或者参考社区中的帖子,如文中提到的博客文章,那里通常会汇总各种场景下的解决方案。