package com.era.util;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;
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.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class CreateChartServiceImpl {
private static final String CHART_PATH = "E:/test/";
public static void main(String[] args) {
// TODO Auto-generated method stub
CreateChartServiceImpl pm = new CreateChartServiceImpl();
// 生成饼状图
pm.makePieChart();
// 生成单组柱状图
pm.makeBarChart();
// 生成多组柱状图
pm.makeBarGroupChart();
// 生成堆积柱状图
pm.makeStackedBarChart();
// 生成折线图
pm.makeLineAndShapeChart();
}
/**
* 生成折线图
*/
public void makeLineAndShapeChart() {
double[][] data = new double[][] { { 672, 766, 223, 540, 126 },
{ 325, 521, 210, 340, 106 }, { 332, 256, 523, 240, 526 } };
String[] rowKeys = { "苹果", "梨子", "葡萄" };
String[] columnKeys = { "北京", "上海", "广州", "成都", "深圳" };
CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);
createTimeXYChar("折线图", "x轴", "y轴", dataset, "lineAndShap.png");
}
/**
* 生成分组的柱状图
*/
public void makeBarGroupChart() {
double[][] data = new double[][] { { 672, 766, 223, 540, 126 },
{ 325, 521, 210, 340, 106 }, { 332, 256, 523, 240, 526 } };
String[] rowKeys = { "a", "b", "c" };
String[] columnKeys = { "北京2", "上海", "广州", "成都", "深圳" };
CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);
createBarChart(dataset, "x坐标", "y坐标", "柱状图", "barGroup.png");
}
/**
* 生成柱状图
*/
public void makeBarChart() {
double[][] data = new double[][] { { 672, 766, 223, 540, 126 } };
String[] rowKeys = { "苹果" };
String[] columnKeys = { "北京1", "上海1", "广州", "成都", "深圳" };
CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);
createBarChart(dataset, "x坐标", "y坐标", "柱状图", "bar.png");
}
/**
* 生成堆栈柱状图
*/
public void makeStackedBarChart() {
double[][] data = new double[][] { { 0.21, 0.66, 0.23, 0.40, 0.26 },
{ 0.25, 0.21, 0.10, 0.40, 0.16 } };
String[] rowKeys = { "aaa", "bbb" };
String[] columnKeys = { "22", "上海", "广州", "成都", "深圳" };
CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);
createStackedBarChart(dataset, "x坐标", "y坐标", "柱状图", "stsckedBar.png");
}
/**
* 生成饼状图
*/
public void makePieChart() {
double[] data = { 9, 91 };
String[] keys = { "失败率", "成功率" };
createValidityComparePimChar(getDataPieSetByUtil(data, keys), "饼状图",
"pie2.png", keys);
}
// 柱状图,折线图 数据集
public CategoryDataset getBarData(double[][] data, String[] rowKeys,
String[] columnKeys) {
return DatasetUtilities
.createCategoryDataset(rowKeys, columnKeys, data);
}
// 饼状图 数据集
public PieDataset getDataPieSetByUtil(double[] data,
String[] datadescription) {
if (data != null && datadescription != null) {
if (data.length == datadescription.length) {
DefaultPieDataset dataset = new DefaultPieDataset();
for (int i = 0; i < data.length; i++) {
dataset.setValue(datadescription[i], data[i]);
}
return dataset;
}
}
return null;
}
/**
* 柱状图
*
*@param dataset
* 数据集
* @param xName
* x轴的说明(如种类,时间等)
* @param yName
* y轴的说明(如速度,时间等)
* @param chartTitle
* 图标题
* @param charName
* 生成图片的名字
* @return
*/
public String createBarChart(CategoryDataset dataset, String xName,
String yName, String chartTitle, String charName) {
JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题
xName, // 目录轴的显示标签
yName, // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
/*
* VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭,
* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看
*/
// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
chart.setTextAntiAlias(false);
chart.setBackgroundPaint(Color.white);
// create plot
CategoryPlot plot = chart.getCategoryPlot();
// 设置横虚线可见
plot.setRangeGridlinesVisible(true);
// 虚线色彩
plot.setRangeGridlinePaint(Color.gray);
// 数据轴精度
NumberAxis vn = (NumberAxis) plot.getRangeAxis();
// vn.setAutoRangeIncludesZero(true);
DecimalFormat df = new DecimalFormat("#0.00");
vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式
// x轴设置
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值
// Lable(Math.PI/3.0)度倾斜
// domainAxis.setCategoryLabelPositions(CategoryLabelPositions
// .createUpRotationLabelPositions(Math.PI / 3.0));
domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的 Lable 是否完整显示
// 设置距离图片左端距离
domainAxis.setLowerMargin(0.1);
// 设置距离图片右端距离
domainAxis.setUpperMargin(0.1);
// 设置 columnKey 是否间隔显示
// domainAxis.setSkipCategoryLabelsToFit(true);
plot.setDomainAxis(domainAxis);
// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)
plot.setBackgroundPaint(new Color(255, 255, 204));
// y轴设置
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(labelFont);
rangeAxis.setTickLabelFont(labelFont);
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
BarRenderer renderer = new BarRenderer();
// 设置柱子宽度
renderer.setMaximumBarWidth(0.05);
// 设置柱子高度
renderer.setMinimumBarLength(0.2);
// 设置柱子边框颜色
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置柱子边框可见
renderer.setDrawBarOutline(true);
// // 设置柱的颜色
renderer.setSeriesPaint(0, new Color(204, 255, 255));
renderer.setSeriesPaint(1, new Color(153, 204, 255));
renderer.setSeriesPaint(2, new Color(51, 204, 204));
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.0);
// 显示每个柱的数值,并修改该数值的字体属性
renderer.setIncludeBaseInRange(true);
renderer
.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
plot.setRenderer(renderer);
// 设置柱的透明度
plot.setForegroundAlpha(1.0f);
FileOutputStream fos_jpg = null;
try {
isChartPathExist(CHART_PATH);
String chartName = CHART_PATH + charName;
fos_jpg = new FileOutputStrea
没有合适的资源?快使用搜索试试~ 我知道了~
JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图
共28个文件
jar:9个
java:6个
class:6个
5星 · 超过95%的资源 需积分: 48 122 下载量 102 浏览量
2012-07-07
19:35:04
上传
评论 2
收藏 3.1MB ZIP 举报
温馨提示
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 可以直接下载解压后,import到myeclipse里面,运行: http://ip:端口号/JFreeChart/index.jsp 会出现多种用JFreeChart生成的报表图片
资源推荐
资源详情
资源评论
收起资源包目录
JFreeChart.zip (28个子文件)
JFreeChart
src
com
era
util
CreateChartServiceImpl.java 21KB
servlet
BingPicServlet.java 4KB
DuiZhanZhuPicServlet.java 5KB
ZhexianPicServlet.java 4KB
TestChartServlet.java 3KB
GroupZhuPicServlet.java 5KB
.classpath 1KB
.mymetadata 303B
.settings
org.eclipse.jdt.core.prefs 330B
.myeclipse
.project 1KB
WebRoot
META-INF
MANIFEST.MF 36B
index.jsp 1KB
WEB-INF
classes
com
era
util
CreateChartServiceImpl.class 14KB
servlet
DuiZhanZhuPicServlet.class 5KB
BingPicServlet.class 4KB
TestChartServlet.class 4KB
ZhexianPicServlet.class 5KB
GroupZhuPicServlet.class 6KB
lib
iText-2.1.5.jar 1.07MB
jfreechart-1.0.14-swt.jar 71KB
gnujaxp.jar 226KB
junit.jar 118KB
jfreechart-1.0.14.jar 1.39MB
servlet.jar 78KB
jfreechart-1.0.14-experimental.jar 13KB
swtgraphics2d.jar 15KB
jcommon-1.0.17.jar 303KB
web.xml 2KB
共 28 条
- 1
严小超
- 粉丝: 20
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页