使用JFreeChart创建饼图


package com.cs.jfreechart;

import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class PieChartDemo {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//生成饼图
JFreeChart chart = ChartFactory.createPieChart(
"图书销售统计表", //图表标题
getDateSet(), //数据
true, //是否显示图例
false, //是否显示工具提示
false //是否生成URL
);
//设置标题及标题字体
chart.setTitle(new TextTitle("图书销售统计图",new Font("黑体",Font.ITALIC,22)));
//建一个图例
LegendTitle legendTitle = chart.getLegend(0);
//设置图例字体
legendTitle.setItemFont(new Font("宋体",Font.BOLD,14));
//获取饼图plot对象
PiePlot plot = (PiePlot) chart.getPlot();
//根据key指定各个数据饼图的颜色
plot.setSectionPaint("JAVA教程", Color.RED);
plot.setSectionPaint("c++教程", Color.BLUE);
plot.setSectionPaint("C#教程", Color.GREEN);
plot.setSectionPaint("VC++教程", Color.ORANGE);
//设置plot字体
plot.setLabelFont(new Font("宋体",Font.BOLD,18));
//设置背景透明度(0~1)
plot.setBackgroundAlpha(0.9f);
//输出文件
FileOutputStream fos = new FileOutputStream("book.jpg");
//用ChartUtilities工具输出
ChartUtilities.writeChartAsJPEG(fos, chart, 800, 600);
fos.close();
}

private static DefaultPieDataset getDateSet() {
//提供生成饼图的数据
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA教程", 47);
dataset.setValue("c++教程", 23);
dataset.setValue("C#教程", 20);
dataset.setValue("VC++教程", 10);
return dataset;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
poi 版本 3.17 文件中包含 模板 测试main 数据类 需要调整下 路径 /** * @Description: * @Author: xsr * @date : 2018/7/22 9:41 */ public static void makePiePpt(List dataList) throws Exception { //打开模板ppt String mtemplateName = "E:/PIE/mtemplate/PIE" + dataList.size() + ".pptx"; String path ="E:/PIE/NewPPT/NewPIE" + dataList.size() + ".pptx"; XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(mtemplateName)); pptx.setPageSize(new Dimension(960, 580)); for (int i = 0; i < dataList.size(); i++) { makePiePpt(pptx, i, dataList); } //保存文件 OutputStream out = new FileOutputStream(path); pptx.write(out); out.close(); System.out.println("导出成功"); } /** * @Description: * @Author: xsr * @date : 2018/7/27 5:41 */ public static void makePiePpt(XMLSlideShow pptx, Integer pieNum, List dataList) throws Exception { //获取第一个ppt页面 XSLFSlide slide = pptx.getSlides().get(0); //遍历第一页元素找到图表 XSLFChart chart; List poixmlDocumentParts = new ArrayList(); for (POIXMLDocumentPart part : slide.getRelations()) { if (part instanceof XSLFChart) { chart = (XSLFChart) part; poixmlDocumentParts.add(chart); } } chart = (XSLFChart) poixmlDocumentParts.get(pieNum); POIXMLDocumentPart xlsPart = chart.getRelations().get(0); //把图表绑定到Excel workbook中 XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); CTChart ctChart = chart.getCTChart(); CTPlotArea plotArea = ctChart.getPlotArea(); CTPieChart pieChart = plotArea.getPieChartArray(0); // 获取图表的系列 CTPieSer ser = pieChart.getSerArray(0); XSSFRow row0 = sheet.createRow(0); // Series Text CTSerTx tx = ser.getTx(); tx.getStrRef().
使用 jfreechart 生成饼图时,可以通过设置渲染器(Renderer)来调整区域的颜色样式。以下是一个简单的示例: ```java import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot; import org.jfree.data.general.DefaultPieDataset; import org.jfree.chart.renderer.category.StandardPieSectionLabelGenerator; import java.awt.Color; public class PieChartExample { public static void main(String[] args) { // 创建数据集 DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("A", 20); dataset.setValue("B", 30); dataset.setValue("C", 50); // 创建饼图并设置渲染器 JFreeChart chart = ChartFactory.createPieChart("Pie Chart Example", dataset, true, true, false); PiePlot plot = (PiePlot) chart.getPlot(); plot.setSectionPaint("A", new Color(255, 0, 0)); // 设置 A 区域的颜色为红色 plot.setSectionPaint("B", new Color(0, 255, 0)); // 设置 B 区域的颜色为绿色 plot.setSectionPaint("C", new Color(0, 0, 255)); // 设置 C 区域的颜色为蓝色 plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} ({2})")); // 设置标签格式 // 显示饼图 ChartFrame frame = new ChartFrame("Pie Chart Example", chart); frame.pack(); frame.setVisible(true); } } ``` 在上面的示例中,通过调用 `setSectionPaint` 方法来设置各区域的颜色,可以传入一个 `Color` 对象或者表示颜色的字符串。同时也可以通过 `setSectionOutlinePaint` 方法设置区域的边界颜色。另外,还可以通过 `setLabelGenerator` 方法来设置标签的格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值