JFreeChart画雷达图、带刻度雷达图、蜘蛛网、带刻度蜘蛛网(转自:http://blog.csdn.net/guoquanyou/archive/2008/12/10/3488313.aspx)...

画雷达图

  1. /**
  2. *@作者:Jcuckoo
  3. *@日期:2008-12-9
  4. *@版本:V1.0
  5. */
  6. publicclassMySpriderWebPlotTest{
  7. publicstaticvoidmain(Stringargs[]){
  8. JFramejf=newJFrame();
  9. jf.add(erstelleSpinnenDiagramm());
  10. jf.pack();
  11. jf.setVisible(true);
  12. }
  13. publicstaticJPanelerstelleSpinnenDiagramm(){
  14. DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
  15. Stringgroup1="apple";
  16. dataset.addValue(5,group1,"w1");
  17. dataset.addValue(6,group1,"w2");
  18. dataset.addValue(4,group1,"w3");
  19. dataset.addValue(2,group1,"w4");
  20. dataset.addValue(5,group1,"w5");
  21. dataset.addValue(5,group1,"w6");
  22. dataset.addValue(5,group1,"w7");
  23. dataset.addValue(8,group1,"w8");
  24. SpiderWebPlotspiderwebplot=newSpiderWebPlot(dataset);
  25. JFreeChartjfreechart=newJFreeChart("Test",TextTitle.DEFAULT_FONT,spiderwebplot,false);
  26. LegendTitlelegendtitle=newLegendTitle(spiderwebplot);
  27. legendtitle.setPosition(RectangleEdge.BOTTOM);
  28. jfreechart.addSubtitle(legendtitle);
  29. ChartPanelchartpanel=newChartPanel(jfreechart);
  30. returnchartpanel;
  31. }
  32. }
蜘蛛网


  1. publicclassMySpriderWebPlotTest{
  2. publicstaticvoidmain(Stringargs[]){
  3. JFramejf=newJFrame();
  4. jf.add(erstelleSpinnenDiagramm());
  5. jf.pack();
  6. jf.setVisible(true);
  7. }
  8. publicstaticJPanelerstelleSpinnenDiagramm(){
  9. DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
  10. Stringgroup1="apple";
  11. dataset.addValue(5,group1,"w1");
  12. dataset.addValue(6,group1,"w2");
  13. dataset.addValue(4,group1,"w3");
  14. dataset.addValue(2,group1,"w4");
  15. dataset.addValue(5,group1,"w5");
  16. dataset.addValue(5,group1,"w6");
  17. dataset.addValue(5,group1,"w7");
  18. dataset.addValue(8,group1,"w8");
  19. Stringgroup2="orange";
  20. dataset.addValue(3,group2,"w1");
  21. dataset.addValue(3,group2,"w2");
  22. dataset.addValue(4,group2,"w3");
  23. dataset.addValue(7,group2,"w4");
  24. dataset.addValue(4,group2,"w5");
  25. dataset.addValue(5,group2,"w6");
  26. dataset.addValue(3,group2,"w7");
  27. dataset.addValue(3,group2,"w8");
  28. Stringgroup3="banana";
  29. dataset.addValue(4,group3,"w1");
  30. dataset.addValue(5,group3,"w2");
  31. dataset.addValue(2,group3,"w3");
  32. dataset.addValue(5,group3,"w4");
  33. dataset.addValue(6,group3,"w5");
  34. dataset.addValue(6,group3,"w6");
  35. dataset.addValue(4,group3,"w7");
  36. dataset.addValue(4,group3,"w8");
  37. SpiderWebPlotspiderwebplot=newSpiderWebPlot(dataset);
  38. JFreeChartjfreechart=newJFreeChart("Test",TextTitle.DEFAULT_FONT,spiderwebplot,false);
  39. LegendTitlelegendtitle=newLegendTitle(spiderwebplot);
  40. legendtitle.setPosition(RectangleEdge.BOTTOM);
  41. jfreechart.addSubtitle(legendtitle);
  42. ChartPanelchartpanel=newChartPanel(jfreechart);
  43. returnchartpanel;
  44. }
  45. }
带刻度问题比较复杂,JFreeChart本身没有提供其功能,需要继承SpiderWebPlot,覆盖drawLabel方法。
此处代码参考Jerry代码,友情感谢。
MySpriderWebPlotTest出自“
王杰瑞的技术博客” 博客,请务必保留此出处http://wangjierui.blog.51cto.com/186879/116845
  1. /**
  2. *@本文出自“王杰瑞的技术博客”博客,请务必保留此出处http://wangjierui.blog.51cto.com/186879/116845
  3. */
  4. publicclassMySpiderWebPlotextendsSpiderWebPlot{
  5. privateintticks=DEFAULT_TICKS;
  6. privatestaticfinalintDEFAULT_TICKS=5;
  7. privateNumberFormatformat=NumberFormat.getInstance();
  8. privatestaticfinaldoublePERPENDICULAR=90;
  9. privatestaticfinaldoubleTICK_SCALE=0.015;
  10. privateintvalueLabelGap=DEFAULT_GAP;
  11. privatestaticfinalintDEFAULT_GAP=10;
  12. privatestaticfinaldoubleTHRESHOLD=15;
  13. MySpiderWebPlot(CategoryDatasetcreateCategoryDataset){
  14. super(createCategoryDataset);
  15. }
  16. @Override
  17. protectedvoiddrawLabel(finalGraphics2Dg2,finalRectangle2DplotArea,finaldoublevalue,
  18. finalintcat,finaldoublestartAngle,finaldoubleextent){
  19. super.drawLabel(g2,plotArea,value,cat,startAngle,extent);
  20. finalFontRenderContextfrc=g2.getFontRenderContext();
  21. finaldouble[]transformed=newdouble[2];
  22. finaldouble[]transformer=newdouble[2];
  23. finalArc2Darc1=newArc2D.Double(plotArea,startAngle,0,Arc2D.OPEN);
  24. for(inti=1;i<=ticks;i++){
  25. finalPoint2Dpoint1=arc1.getEndPoint();
  26. finaldoubledeltaX=plotArea.getCenterX();
  27. finaldoubledeltaY=plotArea.getCenterY();
  28. doublelabelX=point1.getX()-deltaX;
  29. doublelabelY=point1.getY()-deltaY;
  30. finaldoublescale=((double)i/(double)ticks);
  31. finalAffineTransformtx=AffineTransform.getScaleInstance(scale,scale);
  32. finalAffineTransformpointTrans=AffineTransform.getScaleInstance(scale+TICK_SCALE,scale+TICK_SCALE);
  33. transformer[0]=labelX;
  34. transformer[1]=labelY;
  35. pointTrans.transform(transformer,0,transformed,0,1);
  36. finaldoublepointX=transformed[0]+deltaX;
  37. finaldoublepointY=transformed[1]+deltaY;
  38. tx.transform(transformer,0,transformed,0,1);
  39. labelX=transformed[0]+deltaX;
  40. labelY=transformed[1]+deltaY;
  41. doublerotated=(PERPENDICULAR);
  42. AffineTransformrotateTrans=AffineTransform.getRotateInstance(Math.toRadians(rotated),labelX,labelY);
  43. transformer[0]=pointX;
  44. transformer[1]=pointY;
  45. rotateTrans.transform(transformer,0,transformed,0,1);
  46. finaldoublex1=transformed[0];
  47. finaldoubley1=transformed[1];
  48. rotated=(-PERPENDICULAR);
  49. rotateTrans=AffineTransform.getRotateInstance(Math.toRadians(rotated),labelX,labelY);
  50. rotateTrans.transform(transformer,0,transformed,0,1);
  51. finalCompositesaveComposite=g2.getComposite();
  52. g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));
  53. g2.draw(newLine2D.Double(transformed[0],transformed[1],x1,y1));
  54. if(startAngle==this.getStartAngle()){
  55. finalStringlabel=format.format(((double)i/(double)ticks)*this.getMaxValue());
  56. finalRectangle2DlabelBounds=getLabelFont().getStringBounds(label,frc);
  57. finalLineMetricslm=getLabelFont().getLineMetrics(label,frc);
  58. finaldoubleascent=lm.getAscent();
  59. if(Math.abs(labelX-plotArea.getCenterX())<THRESHOLD){
  60. labelX+=valueLabelGap;
  61. labelY+=ascent/(float)2;
  62. }elseif(Math.abs(labelY-plotArea.getCenterY())<THRESHOLD){
  63. labelY+=valueLabelGap;
  64. }elseif(labelX>=plotArea.getCenterX()){
  65. if(labelY<plotArea.getCenterY()){
  66. labelX+=valueLabelGap;
  67. labelY+=valueLabelGap;
  68. }else{
  69. labelX-=valueLabelGap;
  70. labelY+=valueLabelGap;
  71. }
  72. }else{
  73. if(labelY>plotArea.getCenterY()){
  74. labelX-=valueLabelGap;
  75. labelY-=valueLabelGap;
  76. }else{
  77. labelX+=valueLabelGap;
  78. labelY-=valueLabelGap;
  79. }
  80. }
  81. g2.setPaint(getLabelPaint());
  82. g2.setFont(getLabelFont());
  83. g2.drawString(label,(float)labelX,(float)labelY);
  84. }
  85. g2.setComposite(saveComposite);
  86. }
  87. }
  88. }
带刻度雷达图


  1. /**
  2. *@作者:Jcuckoo
  3. *@日期:2008-12-9
  4. *@版本:V1.0
  5. */
  6. publicclassMySpriderWebPlotTest{
  7. publicstaticvoidmain(Stringargs[]){
  8. JFramejf=newJFrame();
  9. jf.add(erstelleSpinnenDiagramm());
  10. jf.pack();
  11. jf.setVisible(true);
  12. }
  13. publicstaticJPanelerstelleSpinnenDiagramm(){
  14. DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
  15. Stringgroup1="apple";
  16. dataset.addValue(5,group1,"w1");
  17. dataset.addValue(6,group1,"w2");
  18. dataset.addValue(4,group1,"w3");
  19. dataset.addValue(2,group1,"w4");
  20. dataset.addValue(5,group1,"w5");
  21. dataset.addValue(5,group1,"w6");
  22. dataset.addValue(5,group1,"w7");
  23. dataset.addValue(8,group1,"w8");
  24. MySpiderWebPlotspiderwebplot=newMySpiderWebPlot(dataset);
  25. JFreeChartjfreechart=newJFreeChart("Test",TextTitle.DEFAULT_FONT,spiderwebplot,false);
  26. LegendTitlelegendtitle=newLegendTitle(spiderwebplot);
  27. legendtitle.setPosition(RectangleEdge.BOTTOM);
  28. jfreechart.addSubtitle(legendtitle);
  29. ChartPanelchartpanel=newChartPanel(jfreechart);
  30. returnchartpanel;
  31. }
  32. }
带刻度蜘蛛网

  1. /**
  2. *@作者:Jcuckoo
  3. *@日期:2008-12-9
  4. *@版本:V1.0
  5. */
  6. publicclassMySpriderWebPlotTest{
  7. publicstaticvoidmain(Stringargs[]){
  8. JFramejf=newJFrame();
  9. jf.add(erstelleSpinnenDiagramm());
  10. jf.pack();
  11. jf.setVisible(true);
  12. }
  13. publicstaticJPanelerstelleSpinnenDiagramm(){
  14. DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
  15. Stringgroup1="apple";
  16. dataset.addValue(5,group1,"w1");
  17. dataset.addValue(6,group1,"w2");
  18. dataset.addValue(4,group1,"w3");
  19. dataset.addValue(2,group1,"w4");
  20. dataset.addValue(5,group1,"w5");
  21. dataset.addValue(5,group1,"w6");
  22. dataset.addValue(5,group1,"w7");
  23. dataset.addValue(8,group1,"w8");
  24. Stringgroup2="orange";
  25. dataset.addValue(3,group2,"w1");
  26. dataset.addValue(3,group2,"w2");
  27. dataset.addValue(4,group2,"w3");
  28. dataset.addValue(7,group2,"w4");
  29. dataset.addValue(4,group2,"w5");
  30. dataset.addValue(5,group2,"w6");
  31. dataset.addValue(3,group2,"w7");
  32. dataset.addValue(3,group2,"w8");
  33. Stringgroup3="banana";
  34. dataset.addValue(4,group3,"w1");
  35. dataset.addValue(5,group3,"w2");
  36. dataset.addValue(2,group3,"w3");
  37. dataset.addValue(5,group3,"w4");
  38. dataset.addValue(6,group3,"w5");
  39. dataset.addValue(6,group3,"w6");
  40. dataset.addValue(4,group3,"w7");
  41. dataset.addValue(4,group3,"w8");
  42. MySpiderWebPlotspiderwebplot=newMySpiderWebPlot(dataset);
  43. JFreeChartjfreechart=newJFreeChart("Test",TextTitle.DEFAULT_FONT,spiderwebplot,false);
  44. LegendTitlelegendtitle=newLegendTitle(spiderwebplot);
  45. legendtitle.setPosition(RectangleEdge.BOTTOM);
  46. jfreechart.addSubtitle(legendtitle);
  47. ChartPanelchartpanel=newChartPanel(jfreechart);
  48. returnchartpanel;
  49. }
  50. }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值