欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JFreeChart生成中文乱码解决方案

程序员文章站 2022-05-30 23:26:40
...
[size=medium]在使用JFreeChart生成图表时候,图表里面的汉字是一个个的“口”,没有正常显示,很是郁闷,上网查找方案,有的说是jar包版本的问题,jfreechart1.0.10以后就会有乱码问题,建议使用1.0.10版本,但是我觉得既然都有新版本为什么不用,只是你没找到解决方案。下面提供的这种方法就可以解决,还能够灵活改变字体,岂不是很好的说:[/size]

import java.awt.Font;
import java.io.File;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

/*
* 绘制柱状图
*/
public class Zhu {
public static void main(String[] args) {
try {
// 设置字体,去除中文乱码
StandardChartTheme sct = new StandardChartTheme("CN");
sct.setExtraLargeFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, 15));
sct.setRegularFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, 15));
sct.setLargeFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, 15));

ChartFactory.setChartTheme(sct);
// 构造数据
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "要求的程度等级", "责任心");
dataset.addValue(200, "学生达到的等级", "责任心");
dataset.addValue(200, "要求的程度等级", "进取心");
dataset.addValue(300, "学生达到的等级", "进取心");
dataset.addValue(400, "要求的程度等级", "好胜心");
dataset.addValue(400, "学生达到的等级", "好胜心");
/*
* public static JFreeChart createBarChart3D( java.lang.String
* title, 设置图表的标题 java.lang.String categoryAxisLabel, 设置分类轴的标示
* java.lang.String valueAxisLabel, 设置值轴的标示 CategoryDataset dataset,
* 设置数据 PlotOrientation orientation, 设置图表的方向 boolean legend,
* 设置是否显示图例 boolean tooltips,设置是否生成热点工具 boolean urls) 设置是否显示url
*/
JFreeChart chart = ChartFactory.createBarChart3D("统计分析", "项目",
"程度等级", dataset, PlotOrientation.VERTICAL, true, false,
false);
// 保存图表
ChartUtilities.saveChartAsPNG(new File("E:/BarChart3D.png"),chart, 800, 500);
System.out.println("绘图完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}

相关标签: jfreechart