首先需要导入两个包:
jcommon-1.0.17.jar
jfreechart-1.0.14.jar
如果你手头没有需要到JFreeChart的网站上去下载地址如下:http://sourceforge.net/projects/jfreechart/files/
下载后可以找到以上两个包,有个包gnujaxp.jar加入后启动tomcat会报错,不知何解,下面是代码:
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
public class Test {
public static void main(String[] args) {
CategoryDataset dataset = getDataSet2();
DefaultPieDataset data = getDataSet();
JFreeChart chart1 = ChartFactory.createBarChart3D
("城市水果产量图", //图表标题
"水果", //目录轴的显示标签
"产量", //数值周的显示标签
dataset,
PlotOrientation.VERTICAL,//图标方向:水平、垂直
true,//是否显示图例(对于简单的柱状图必须是false)
false,//是否生成工具
false);//是否生成URL
JFreeChart chart2 = ChartFactory.createPieChart3D("水果产量", data, true, false, false);
configFont(chart1);
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");//生成的路径,请在这里查看图片
ChartUtilities.writeChartAsPNG(fos_jpg, chart1, 400, 300, null);//chart1,chart2
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fos_jpg.close();
} catch (IOException e2) {
e2.printStackTrace();
}
}
}
private static void configFont(JFreeChart chart) {
// 配置字
Font xfont = new Font("宋体", Font.PLAIN, 12);// X轴
Font yfont = new Font("宋体", Font.PLAIN, 12);// Y轴
Font kfont = new Font("宋体", Font.PLAIN, 12);// 底部
Font titleFont = new Font("隶书", Font.BOLD, 25); // 图片标题
CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象
// 图片标题
chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// X 轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(xfont);// 轴标题
domainAxis.setTickLabelFont(xfont);// 轴数值
domainAxis.setTickLabelPaint(Color.BLUE); // 字体颜色
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示
// Y 轴
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(yfont);
rangeAxis.setLabelPaint(Color.BLUE); // 字体颜色
rangeAxis.setTickLabelFont(yfont);
}
private static DefaultPieDataset getDataSet(){
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("梨子",200);
dataset.setValue("香蕉",300);
dataset.setValue("荔枝",400);
dataset.setValue("葡萄",500);
return dataset;
}
private static CategoryDataset getDataSet2(){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
}
分享到:
相关推荐
在本文中,我们将深入探讨如何使用JFreeChart来创建饼状图,并重点讲解如何设置语言以及解决可能出现的乱码问题。 首先,JFreeChart依赖于JCommon库,这是一个提供基础图形和数据处理功能的库。在我们的示例中,...
本工程例子展示了如何利用JFreeChart创建包含中文内容的图表,并解决中文乱码问题以及饼图中显示百分比的问题。 ### 一、中文乱码处理 在Java程序中,处理中文字符时常常会遇到乱码问题。这通常是由于字符编码设置...
在我们的例子中,`zysong.ttf`是一个TrueType字体文件,可能包含解决方框问题所需的字符集。 当JFreeChart在绘制图表时,它会尝试找到合适的字体来呈现图例、轴标签等文本。如果系统中没有包含JFreeChart需要的字体...
该程序为一个绘制饼图的简单例子,并解决了再饼图中汉字显示出现乱码问题。
《JFreechart生成PDF中文显示问题的解决方案》 在使用JFreechart库生成PDF文档时,经常遇到一个棘手的问题,即中文文字无法正常显示。这主要是由于JFreechart默认的字体映射策略不支持中文字符集导致的。本文将详细...
这个特定的例子是将JFreeChart应用于Web工程中,解决了在Web环境下可能出现的乱码问题,确保了图表的清晰易读。 **1. 折线图** 折线图是一种常用的数据可视化方式,常用于显示数据随时间变化的趋势。在JFreeChart中...
6. 解决报表问题:文档列举了一些常见的报表问题以及它们的解决方案,例如中文字体乱码、PDF中无法显示、报表分栏、空值处理、背景颜色交替、格式化输出、柱状图方向、报表参数传递、不同文件格式导出、Web应用中...