- 浏览: 139334 次
- 性别:
- 来自: 无锡
文章分类
最新评论
-
yh443042575:
楼主造福社会呀,顶顶顶!!!
jfreechart学习笔记三 带刻度的蜘蛛图 -
twtja1:
最后一句"如果需要在父类中仍然要使用类型字段,需要在 ...
hibernate继承之一,单表继承映射 -
qq361837213:
更换新版dwr的jar包就行了,新版本解决了这个问题
dwr文件上传在chrome下的问题及解决方法 -
无象心:
无象心 写道改为这样就可以了
loadingComple ...
dwr文件上传在chrome下的问题及解决方法 -
无象心:
loadingComplete:function(ba ...
dwr文件上传在chrome下的问题及解决方法
其实带刻度的蜘蛛图网上也有不少资料,我这个也是参照别人的资料来做的,不管咋样,还是记上吧。
先上图
1、构造dataset
private DefaultCategoryDataset createDataSet2(Map<String, Map<String, Object>> resultMap, List<String> dimNameList) { DefaultCategoryDataset dataset = new DefaultCategoryDataset();//创建默认的种类数据类型就可以了,蜘蛛图的每个维度可以看成一种类型 Set<String> keySet = resultMap.keySet(); for(String key : keySet){ Map<String,Object> infoMap = resultMap.get(key); String vendorCode = key.split("&")[0]; String vendorName = key.split("&")[1]; for(String dimName : dimNameList){ if(infoMap.get(dimName)==null){ continue; } double score = (Double) infoMap.get(dimName); dataset.addValue(score, vendorName.trim() +"("+vendorCode.trim()+")", dimName); } } return dataset; }
2、因为jfreechart默认的蜘蛛图内容区域对象是不带刻度的,所以我们扩展一个好了,写一个扩展类继承SpiderWebPlot,主要是重写drawLabel方法,这个网上很多地方都有。
public class SpiderWebPlotExpand extends SpiderWebPlot{ private static final long serialVersionUID = 4005814203754627127L; private int ticks = DEFAULT_TICKS; private static final int DEFAULT_TICKS = 5; private NumberFormat format = NumberFormat.getInstance(); private static final double PERPENDICULAR = 90; private static final double TICK_SCALE = 0.015; private int valueLabelGap = DEFAULT_GAP; private static final int DEFAULT_GAP = 10; private static final double THRESHOLD = 15; public SpiderWebPlotExpand(CategoryDataset createCategoryDataset) { super(createCategoryDataset); } @Override protected void drawLabel(final Graphics2D g2, final Rectangle2D plotArea, final double value, final int cat, final double startAngle, final double extent) { super.drawLabel(g2, plotArea, value, cat, startAngle, extent); final FontRenderContext frc = g2.getFontRenderContext(); final double[] transformed = new double[2]; final double[] transformer = new double[2]; final Arc2D arc1 = new Arc2D.Double(plotArea, startAngle, 0, Arc2D.OPEN); for (int i = 1; i <= ticks; i++) { final Point2D point1 = arc1.getEndPoint(); final double deltaX = plotArea.getCenterX(); final double deltaY = plotArea.getCenterY(); double labelX = point1.getX() - deltaX; double labelY = point1.getY() - deltaY; final double scale = ((double) i / (double) ticks); final AffineTransform tx = AffineTransform.getScaleInstance(scale, scale); final AffineTransform pointTrans = AffineTransform.getScaleInstance(scale + TICK_SCALE, scale + TICK_SCALE); transformer[0] = labelX; transformer[1] = labelY; pointTrans.transform(transformer, 0, transformed, 0, 1); final double pointX = transformed[0] + deltaX; final double pointY = transformed[1] + deltaY; tx.transform(transformer, 0, transformed, 0, 1); labelX = transformed[0] + deltaX; labelY = transformed[1] + deltaY; double rotated = (PERPENDICULAR); AffineTransform rotateTrans = AffineTransform.getRotateInstance(Math.toRadians(rotated), labelX, labelY); transformer[0] = pointX; transformer[1] = pointY; rotateTrans.transform(transformer, 0, transformed, 0, 1); final double x1 = transformed[0]; final double y1 = transformed[1]; rotated = (-PERPENDICULAR); rotateTrans = AffineTransform.getRotateInstance(Math.toRadians(rotated), labelX, labelY); rotateTrans.transform(transformer, 0, transformed, 0, 1); final Composite saveComposite = g2.getComposite(); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f)); g2.draw(new Line2D.Double(transformed[0], transformed[1], x1, y1)); if (startAngle == this.getStartAngle()) { final String label = format.format(((double) i / (double) ticks) * this.getMaxValue()); final LineMetrics lm = getLabelFont().getLineMetrics(label, frc); final double ascent = lm.getAscent(); if (Math.abs(labelX - plotArea.getCenterX()) < THRESHOLD) { labelX += valueLabelGap; labelY += ascent / (float) 2; } else if (Math.abs(labelY - plotArea.getCenterY()) < THRESHOLD) { labelY += valueLabelGap; } else if (labelX >= plotArea.getCenterX()) { if (labelY < plotArea.getCenterY()) { labelX += valueLabelGap; labelY += valueLabelGap; } else { labelX -= valueLabelGap; labelY += valueLabelGap; } } else { if (labelY > plotArea.getCenterY()) { labelX -= valueLabelGap; labelY -= valueLabelGap; } else { labelX += valueLabelGap; labelY -= valueLabelGap; } } g2.setPaint(getLabelPaint()); g2.setFont(getLabelFont()); g2.drawString(label, (float) labelX, (float) labelY); } g2.setComposite(saveComposite); } } }
3、创建chart
private JFreeChart createChart2(DefaultCategoryDataset dataSet) { SpiderWebPlotExpand plot = new SpiderWebPlotExpand(dataSet); JFreeChart chart = new JFreeChart("维度得分分析", plot); return chart; }
这次就比较简单了,因为网上例子不少,记在这里只是给自己以后查找方便,哈
发表评论
-
linux下java8 启动spring-boot包
2018-05-09 09:00 0java8如何管理spring-boot的jar包 -
tomcat部署多个项目注意点
2016-11-22 21:45 01、启动老是报jdbc.driver的错。把jar都从 ... -
文件下载和浏览器直接打开
2016-07-09 10:03 0content-disposition=attac ... -
JSP文件下载
2015-11-02 16:03 729JSP工具之,文件下载 <% String fi ... -
maven学习笔记七 仓库
2014-07-03 23:37 0构件的仓库 仓库主要是在构建过程中处理构件和依赖包。 ... -
maven学习笔记六 构建配置
2014-07-02 22:22 0maven一直致力于使构建 ... -
maven学习笔记五 POM
2014-06-26 00:27 0POM project object model项目对象模 ... -
Maven学习笔记四 生命周期
2014-06-24 23:41 0Maven的项目管理和构建是基于生命周期这个概念的。 这意 ... -
maven3读书笔记 第一个maven工程
2014-06-17 10:06 0在命令行中输入: mvn archetype:gener ... -
关于南车项目的一些技术性总结
2013-11-06 10:15 0写道 set JAVA_OPTS=-Xms512m ... -
php5.5 win7 64位系统安装配置
2013-07-23 21:04 0本人系统是win7 64 位所以需要安装64位的php ... -
Hibernate middleGen工具使用
2013-07-16 23:01 0本文所用数据库版本为MySQL5.0.15、Oracle10 ... -
springAOP后对象代理和hibernate不识别问题
2013-07-16 23:03 1041场景:自定义注解,AOP拦截,处理前置业务。然后从spri ... -
tomcat7内存溢出错误的一些原因和解决方案
2013-01-11 19:42 10993今天在做公司一个工程2个版本的运行时,突然出现新版的工程在t ... -
在struts2中整合sitemesh
2013-01-10 21:56 2472今天在做个整合时,决定用sitemesh把几个页面的布局整理下 ... -
maven3读书笔记一 认识maven
2013-01-08 18:35 0maven是什么,简单来说,它是一个构建和管理你工程的一个工 ... -
分享两个数据库转换小工具,挺有用的
2013-01-08 17:07 981一个是oracle转mysql的 另一个是mysql转ora ... -
jfreechart学习笔记二 象限图
2013-01-08 11:01 2561用jfreechart画一个象限图,因为在jfreechart ... -
jfreechart使用笔记一 基本知识
2013-01-07 19:20 1647公司要做一些图表,各 ... -
maven3读书笔记2 的安装和设置
2012-11-25 21:54 0一、安装 1、下载maven 地址:http://mav ...
相关推荐
在本篇“JFreeChart学习笔记3-简单Line图形创建”中,我们将深入探讨如何使用JFreeChart库在Java环境中创建基本的线性图表。JFreeChart是一个强大的、开源的Java图表库,它允许开发者轻松地生成各种类型的图表,包括...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括柱状图、饼图、线图、散点图以及我们今天关注的雷达图(也称为蜘蛛网图)。在Java应用程序中,JFreeChart提供了丰富的API,使得开发者能够...
**JFreeChart学习笔记1 - 简单Pie图创建** 在Java开发中,我们经常需要展示数据,而饼图(Pie Chart)是一种常见的数据可视化工具,尤其适用于展示各项比例关系。JFreeChart是一个强大的开源Java图表库,它提供了...
NULL 博文链接:https://chengshangqian-old.iteye.com/blog/1172486
在本文中,我们将深入探讨如何使用JFreeChart库在Java中创建简单的柱状图,以及如何扩展到3D效果。JFreeChart是一个流行的开源图表库,适用于多种图表类型,包括条形图、线形图、饼图等。通过学习本文,你将能够利用...
《JFreeChart学习详解》 JFreeChart是一个强大的Java库,用于生成高质量的图表,包括折线图、柱状图、饼图、散点图等多种类型。它在各种应用程序中广泛应用,尤其适合于Web应用程序中数据可视化的实现。本文将通过...
### JfreeChart 学习笔记:深度解析与应用 #### JFreeChart概览与核心功能 JFreeChart作为一款开源的JAVA项目,专为图表开发而设计,支持丰富的图表类型,包括饼图、柱状图(含普通及堆栈柱状图)、线图、散点图、...
在描述中提到的“带刻度雷达图”和“带刻度蜘蛛网”是指在雷达图的轴上显示刻度标记,这样可以更清楚地看到每个轴上的数值。这可以通过调整`RadarPlot`的属性实现,例如设置`setTickLabelsVisible(true)`以显示刻度...
**JFreeChart学习笔记** JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或Web应用中创建各种复杂的图表,如柱状图、饼图、线形图、散点图、甘特图等。这款开源工具广泛应用于数据分析、报表生成和...
在本学习笔记中,我们将深入探讨如何使用 JFreeChart 来构建这些图表,特别是混合图和动态时序图。 首先,构建一个 JFreeChart 图表的基本步骤涉及以下三个主要部分: 1. **创建面板容器**:通常,我们可以继承 `...
这个教程将帮助你深入理解和使用 JFreeChart,结合学习笔记、流程图和示例代码,你可以全面掌握 JFreeChart 的核心概念和实践技巧。 首先,我们从 `jfreechart学习笔记.doc` 入手,这份文档应该包含了关于 ...
JFreeChart 是一款开源的 Java 图形库,用于创建各种统计图表,如饼图、柱状图、折线图等。这份学习资料是针对 JFreeChart 的使用进行讲解,主要涵盖了如何在 Web 项目中集成 JFreeChart 以及创建不同类型的图表。 ...
JFreeChart是一个强大的Java图表库,它允许开发者创建多种类型的二维和三维图表,包括柱状图、饼图、线图、散点图等,并且支持自定义颜色、样式和动画效果。Applet是Java的一种小型应用程序,常用于网页中展示交互式...
jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...
- **使用ChartUtilities类**:JfreeChart提供的ChartUtilities类可以方便地将图表保存为JPEG、PNG等常见图片格式。 4. **实例分析**: - 创建一个Action类,处理数据并调用JfreeChart的ChartFactory创建图表。 -...
JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出功能。 **雷达图的使用...
JfreeChart学习总结JfreeChart学习总结