关于JFreeChart中文乱码的问题
最近在做Java课设,遇到了JFreeChart乱码的问题,总结了一下:
public class JFreeChartUtils {
public static void pie(String title, Map<String,Double> totalMap, double sum, String path) {
DefaultPieDataset pieDataset = new DefaultPieDataset();
for(String dataName : totalMap.keySet()) {
double dataValue = totalMap.get(dataName);
String bf = String.format("%.2f%%", dataValue / sum * 100);
dataName = dataName + ":" + dataValue + "元(" + bf + ")";
pieDataset.setValue(dataName, dataValue);
}
// JFreeChart chart = ChartFactory.createPieChart3D(title, pieDataset, true, true, false);
JFreeChart chart=ChartFactory.createPieChart(title, pieDataset, true, true, false);
//JFreeChart chart=ChartFactory.createRingChart(title, pieDataset, true, true, false);
setPieChartFont(chart);
try {
ChartUtilities.saveChartAsJPEG(new File(path), chart, 500, 300);
} catch(Exception e) {
throw new RuntimeException("生成图片失败");
}
}
private static void setPieChartFont(JFreeChart freeChart){
PiePlot pieChart = (PiePlot) freeChart.getPlot();
pieChart.setLabelFont(new Font("宋体", Font.BOLD, 15));
TextTitle textTitle = freeChart.getTitle();
textTitle.setFont(new Font("宋体", Font.ITALIC, 20));
LegendTitle legendTitle = freeChart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.BOLD+Font.ITALIC, 10));
}
}
原因就是字体的问题
这里注意一下下面的setPieChartFont方法,需要的话直接cv就可以了