jfreechart环形图完美实现
邮件发送由于不支持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环形图完美实现相关推荐
- jfreechart折线图+柱状图、柱状图(堆叠)+折线图、饼状图、环形图
记录jfreechart生成图片测试程,主要是为自己研究过之后的记录:) 折线图+柱状图 柱状图(堆叠)+折线图 获取饼状图 获取环形图 jar包下载地址:https://download.csdn. ...
- Java通过JFreeChart实现(饼图、柱状图、层叠柱状图、折线图、散点图、雷达图、环形图、仪表盘图、XY图)生成图片和下载
目录 1.添加依赖 2.工具类 2.1 JFreeChart工具类 2.2 GenerateChartUtil 图表生成工具类 2.3 GeneratePieChartUtil 饼图生成工具类 3. ...
- Echarts环形图设置空数据样式
需求背景 由于最近的需求涉及到图表的展示,所以引入Echarts来渲染图表,但是问题也随之而来了,仔细阅读过文档后发现,Echarts对于环形图并没有能够设置默认样式的地方,对于空数据,界面直接就是空 ...
- java 饼图 框架_Java 在 Excel 中创建饼图/环形图
import com.spire.xls.*;importcom.spire.xls.charts.ChartSerie;importcom.spire.xls.charts.ChartSeries; ...
- 修改echarts环形图的牵引线及文字位置
修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...
- ECharts 之 环形图
上一篇文章写了堆叠柱状图的用法,本文写的是环形图的方法,环形图是饼图的一种,具体的饼图可以自己更改radius属性的大小 radius : ['50%', '70%'], //饼图的半径,第一项是内半 ...
- python怎么画多重饼状图_Python通过matplotlib画双层饼图及环形图简单示例
(1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示 ...
- tableau可视化函数使用案例(六十七)-Tableau饼图及其变种(环形图、南丁格尔玫瑰图、旭日图)
01 基本饼图 饼图常用于表达多个子类的占比,通过观察饼图扇形角度的大小,可快速对比各子类间的相对关系.在Tableau中,制作饼图比较方便,仅需依次将类别和相应度量信息拖动到标记区的颜色和大小即可. ...
- tableau实战系列(四)用条形图或环形图来呈现进度百分比
我们经常用来呈现百分比的图表有两种:条形图或环形图(如下图),它们在 Tableau 中是可以实现的. 那么,在 Tableau 中如何制作百分比条形图和百分比环形图呢?今天我们来学习方法. ☞ 先来 ...
- 如何用pyecharts绘制柱状图,条形图,折线图,饼图,环形图,散点图
简介 pyecharts是一个由百度开源的数据可视化,凭借着良好的互交性,精巧的图表设计,得到了众多开发者的认可,而python是一门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时, ...
最新文章
- 独家 | 为什么在CV(视觉识别)领域,Transformers正在缓慢逐步替代CNN?
- 2020年中国智慧城市发展值得关注的技术
- 使用Gradle消除开发重新部署
- 如何开始使用任何类型的数据? - 第1部分
- 教你怎么使用你的电脑
- 【实践】BiLSTM上的CRF,用命名实体识别任务来解释CRF(2)损失函数
- 识别验证码,你有几分成功率?
- POJ1679 The Unique MST —— 次小生成树
- 初步探究ES6之箭头函数
- 如何反编译dll,并生成新的dll
- PGP加密软件的应用:使用PGPkeys管理密钥环、密钥的生成、传播和废除、数字签名、验证签名、对文件加密和解密”
- outlook qr码在哪里_原平防伪码溯源_橙程(北京)科技有限公司
- 看懂影片标题,各种电影视频格式标题的含义
- 更换系统的jdk版本
- Linux下mysql数据库从服务器A只迁移DATA文件夹到服务器B
- 如何用数学课件制作工具奇数等分圆
- 2017 ACM Arabella Collegiate Programming Contest(solved 11/13)
- 动手学深度学习——链式法则、自动求导及实现
- 靶场环境的搭建(2020年6月15日学习笔记)
- 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。到第10天早上时,只剩下一个,求第一天有多少桃子。