我是靠谱客的博主 无情学姐,最近开发中收集的这篇文章主要介绍java 雷达图,JFreeChart 生成雷达图(急)解决思路(2),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java codepublic class MySpiderWebPlot extends SpiderWebPlot {

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 = 20;

private static final double THRESHOLD = 15;

MySpiderWebPlot(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));

最后

以上就是无情学姐为你收集整理的java 雷达图,JFreeChart 生成雷达图(急)解决思路(2)的全部内容,希望文章能够帮你解决java 雷达图,JFreeChart 生成雷达图(急)解决思路(2)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部