邮件发送由于不支持js,项目只能在后台生成环形图,用jfreechart完全可以实现,即:RingPlot。

这就拿jfreechart生成的最终效果,依赖jar包jfreechart,如果有任何细节还需要调整,强烈建议去读API或者看源码,这里直接上实现代码了

import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import javax.imageio.ImageIO;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.DefaultDrawingSupplier;
import org.jfree.chart.plot.RingPlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;public class RingChart {public RingChart() {this.createChart();}@SuppressWarnings("deprecation")public void createChart() {JFreeChart chart = ChartFactory.createRingChart(null, this.createDataset(), true, false, false);chart.getLegend().setVisible(false);// 环形图RingPlot ringplot = (RingPlot) chart.getPlot();ringplot.setOutlineVisible(false);//{2}表示显示百分比ringplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{2}"));ringplot.setBackgroundPaint(new Color(253,253,253));ringplot.setOutlineVisible(false);//设置标签样式ringplot.setLabelFont(new Font("宋体", Font.BOLD, 15));ringplot.setSimpleLabels(true);ringplot.setLabelLinkPaint(Color.WHITE);ringplot.setLabelOutlinePaint(Color.WHITE);ringplot.setLabelLinksVisible(false);ringplot.setLabelShadowPaint(null);ringplot.setLabelOutlinePaint(new Color(0,true));ringplot.setLabelBackgroundPaint(new Color(0,true));ringplot.setLabelPaint(Color.WHITE);ringplot.setSectionOutlinePaint(Color.WHITE);ringplot.setSeparatorsVisible(true);ringplot.setSeparatorPaint(Color.WHITE);ringplot.setShadowPaint(new Color(253,253,253));ringplot.setSectionDepth(0.58);ringplot.setStartAngle(90);ringplot.setDrawingSupplier(new DefaultDrawingSupplier(new Paint[] { new Color(134, 212, 222), new Color(174, 145, 195), new Color(255, 162, 195),new Color(249, 163, 86),new Color(119, 173, 195)},DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE,DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE));FileOutputStream fos_jpg = null;try {fos_jpg = new FileOutputStream("d:\\ring.png");ChartUtilities.writeChartAsPNG(fos_jpg,chart, 235, 230, null);System.out.println("成功");//以下由于jfreechart设置背景色后,背景会有留白,直接将目标图片截取ByteArrayOutputStream baos = new ByteArrayOutputStream();ChartUtilities.writeChartAsPNG(baos,chart, 240, 230, null);BufferedImage bi = ImageIO.read(new ByteArrayInputStream(baos.toByteArray()));BufferedImage sub = bi.getSubimage(5, 0, 230, 225);ImageIO.write(sub, "png", new File("d:\\ring_sub.png"));} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {fos_jpg.close();} catch (Exception e) {System.out.println(e.getMessage());}}}//测试数据public PieDataset createDataset() {DefaultPieDataset dataSet = new DefaultPieDataset();int i, j;String[] key = { "私募股权","房地产","基金","现金宝宝","股票" };int[] value = { 20, 20, 20, 30, 10 };for (i = 0, j = 0; i < name.length && j < value.length; i++, j++) {dataSet.setValue(name[i], value[j]);}return dataSet;}public static void main(String[] args) {new RingChart();}
}

转载于:https://www.cnblogs.com/render-inside/p/6054820.html

jfreechart环形图完美实现相关推荐

  1. jfreechart折线图+柱状图、柱状图(堆叠)+折线图、饼状图、环形图

    记录jfreechart生成图片测试程,主要是为自己研究过之后的记录:) 折线图+柱状图 柱状图(堆叠)+折线图 获取饼状图 获取环形图 jar包下载地址:https://download.csdn. ...

  2. Java通过JFreeChart实现(饼图、柱状图、层叠柱状图、折线图、散点图、雷达图、环形图、仪表盘图、XY图)生成图片和下载

    目录 1.添加依赖 2.工具类 2.1 JFreeChart工具类 2.2  GenerateChartUtil 图表生成工具类 2.3 GeneratePieChartUtil 饼图生成工具类 3. ...

  3. Echarts环形图设置空数据样式

    需求背景 由于最近的需求涉及到图表的展示,所以引入Echarts来渲染图表,但是问题也随之而来了,仔细阅读过文档后发现,Echarts对于环形图并没有能够设置默认样式的地方,对于空数据,界面直接就是空 ...

  4. java 饼图 框架_Java 在 Excel 中创建饼图/环形图

    import com.spire.xls.*;importcom.spire.xls.charts.ChartSerie;importcom.spire.xls.charts.ChartSeries; ...

  5. 修改echarts环形图的牵引线及文字位置

    修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...

  6. ECharts 之 环形图

    上一篇文章写了堆叠柱状图的用法,本文写的是环形图的方法,环形图是饼图的一种,具体的饼图可以自己更改radius属性的大小 radius : ['50%', '70%'], //饼图的半径,第一项是内半 ...

  7. python怎么画多重饼状图_Python通过matplotlib画双层饼图及环形图简单示例

    (1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示 ...

  8. tableau可视化函数使用案例(六十七)-Tableau饼图及其变种(环形图、南丁格尔玫瑰图、旭日图)

    01 基本饼图 饼图常用于表达多个子类的占比,通过观察饼图扇形角度的大小,可快速对比各子类间的相对关系.在Tableau中,制作饼图比较方便,仅需依次将类别和相应度量信息拖动到标记区的颜色和大小即可. ...

  9. tableau实战系列(四)用条形图或环形图来呈现进度百分比

    我们经常用来呈现百分比的图表有两种:条形图或环形图(如下图),它们在 Tableau 中是可以实现的. 那么,在 Tableau 中如何制作百分比条形图和百分比环形图呢?今天我们来学习方法. ☞ 先来 ...

  10. 如何用pyecharts绘制柱状图,条形图,折线图,饼图,环形图,散点图

    简介 pyecharts是一个由百度开源的数据可视化,凭借着良好的互交性,精巧的图表设计,得到了众多开发者的认可,而python是一门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时, ...

最新文章

  1. 独家 | 为什么在CV(视觉识别)领域,Transformers正在缓慢逐步替代CNN?
  2. 2020年中国智慧城市发展值得关注的技术
  3. 使用Gradle消除开发重新部署
  4. 如何开始使用任何类型的数据? - 第1部分
  5. 教你怎么使用你的电脑
  6. 【实践】BiLSTM上的CRF,用命名实体识别任务来解释CRF(2)损失函数
  7. 识别验证码,你有几分成功率?
  8. POJ1679 The Unique MST —— 次小生成树
  9. 初步探究ES6之箭头函数
  10. 如何反编译dll,并生成新的dll
  11. PGP加密软件的应用:使用PGPkeys管理密钥环、密钥的生成、传播和废除、数字签名、验证签名、对文件加密和解密”
  12. outlook qr码在哪里_原平防伪码溯源_橙程(北京)科技有限公司
  13. 看懂影片标题,各种电影视频格式标题的含义
  14. 更换系统的jdk版本
  15. Linux下mysql数据库从服务器A只迁移DATA文件夹到服务器B
  16. 如何用数学课件制作工具奇数等分圆
  17. 2017 ACM Arabella Collegiate Programming Contest(solved 11/13)
  18. 动手学深度学习——链式法则、自动求导及实现
  19. 靶场环境的搭建(2020年6月15日学习笔记)
  20. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。到第10天早上时,只剩下一个,求第一天有多少桃子。

热门文章

  1. 从网管到首席架构师,我这十年的成长感悟
  2. 你真的会用Context么?
  3. R语言--字符串操作
  4. 反向传播与梯度消失梯度爆炸
  5. 设置windows服务依赖项
  6. 八大排序算法的python实现(七)基数排序
  7. 常见批处理作业调度算法
  8. gson将JSON字符串转成Java对象
  9. 使用 RxJava 的正确姿势
  10. 【逆元】HDU-1576