文章來源於 sina 煙鬼博客 寫於2009-09-30 09:48
原创:我用的是最新版本1.0.16
设置字体,在网上找的有的根本就不行,所以自己就尝试着自己去试,最后试出几种解决办法,希望能对大家有用:
JFreeChart chart;
对于乱码,下面的语句请尝试就一定可以解决:
//设置图表的标题 chart.getTitle().setFont(new Font("隶书", Font.ITALIC, 15)); //设置X轴下方标题 chart.getXYPlot().getDomainAxis().setLabelFont(new Font("隶书", Font.ITALIC, 15)); //设置X轴坐标字体 chart.getXYPlot().getDomainAxis().setTickLabelFont(new Font("隶书", Font.ITALIC, 15)); //设置Y轴左方标题 chart.getXYPlot().getRangeAxis().setLabelFont(new Font("隶书", Font.ITALIC, 15)); //设置Y轴坐标字体 chart.getXYPlot().getRangeAxis().setTickLabelFont(new Font("隶书", Font.ITALIC, 15)); //设置X轴下方方框里面的字体 chart.getLegend().setItemFont(new Font("隶书", Font.ITALIC, 15)); //对于饼状图有下列情况,可以设置饼状内容的字体 //要对它进行强制类型转换 PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋体", 0, 12));
---------------------------------------------------------==========================
下面这样也可以解决一些:
JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图",
"肉类",
"销量",
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体",Font.PLAIN, 20));
CategoryPlot plot = chart.getCategoryPlot();//获得图表区域对象
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setVisible(true);
plot.setDomainAxis(domainAxis);
ValueAxis rAxis = plot.getRangeAxis();
domainAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,15));
rAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
rAxis.setLabelFont(new Font("黑体",Font.PLAIN,15));
-=-=-=-=============================================
饼状图形乱码解决:
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false);
chart.getLegend().setItemFont(new Font("宋体", 0, 12));
PiePlot pieplot = (PiePlot) chart.getPlot();
pieplot.setLabelFont(new Font("宋体", 0, 12));
pieplot.setNoDataMessageFont(new Font("宋体", 0, 12));
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体",Font.PLAIN, 20));
-----------------------------------------==========================================
一下是引用:http://blog.sina.com.cn/s/blog_5dc12c490100d911.html
org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类
org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持
org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴(RangeAxis)和横轴(DomainAxis)
org.jfree.chart.render.XXXRender:负责如何显示一个图表对象
org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类.
1、DataSet的类型
PieDataset接口,实现类是DefaultPieDataset,用来作为饼图的数据源
CatagoryDataset接口,实现类是DefaultCatagoryDataset,用来作为柱状图的数据源(当然,接口IntervalXYDataset也可作为它的数据源)
CatagoryDataset接口和XYDataset接口可以作为折线图的数据源
XYDataset接口,实现类是TimeSeriesCollection,作为时间序列图的数据源
2、ChartFactory工厂类,由它来产生JFreeChart对象
3、Plot对象,通过JFreeChart对象得到,然后通过Plot对象对图形内部进行进一步调整(例如,折线的类型等),当然,对于不同类型的图形,有不同的实现子类。
4.中文乱码问题:
- plot.getDomainAxis().setLabelFont(font); //x轴外围字体
- plot.getDomainAxis().setTickLabelFont(font); //x轴刻度字体
- plot.getRangeAxis().setLabelFont(font); //y轴外围字体
- plot.getRangeAxis().setTickLabelFont(font); //y轴刻度字体
- jfreechart.getTitle().setFont(new Font("宋体", Font.CENTER_BASELINE, 20)); //标题字体
- jfreechart.getLegend().setItemFont(font); //设置最底下方框内的字体
5.// 设置图表的背景颜色
chart.setBackgroundPaint(new Color(11, 95, 141));
// 自定义图表的标题的字体和颜色
TextTitle title = chart.getTitle();
title.setFont(new Font("汉真广标", Font.BOLD, 25));
title.setPaint(Color.YELLOW);
// 获得图表对象的引用
PiePlot plot = (PiePlot) chart.getPlot();
GradientPaint bg = new GradientPaint(0,50,new Color(248,253,255),0,250,new Color(205,237,252));
plot.setBackgroundPaint(bg);
// 设置饼图各组成部分的绘制颜色
Color color[] = new Color[lossTitle.length];
color[0] = new Color(99,99,0);
color[1] = new Color(255,169,66);
color[2] = new Color(255,0,66);
for(int i = 0;i < color.length;i++)
{
plot.setSectionPaint(i, color[i]);
// 分离显示饼图中表示"JAVA"的那部分圆弧
if (lossTitle[i].equals("损耗电量"))
plot.setExplodePercent(i, 0.15);
}
// 设置是否使用反锯齿功能
//chart.setAntiAlias(false);
// 设置饼图标签的绘制字体
plot.setLabelFont(new Font("Courier New", Font.PLAIN, 12));
// 设置饼图的外观为椭圆形还是正圆形
plot.setCircular(false);
// 结束自定义图表绘制的相关属性
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
// 设置图片生成格式
String fileName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);
// 设置图片生成路径
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
=----------=-=---------------------------------------------=