如何在现有的JfreeChart上绘制蜘蛛图

我有一个jfree图表,每次运行代码时都可以生成。 现在我想在同一个图表上覆盖更多的蜘蛛图。 请帮我怎么做

在此处输入图像描述

在此之上,我需要使用jfree添加一个蜘蛛图表。

这是我做这个图表的代码。

package com.rectrix.exide.pdfbox; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Paint; import java.awt.PaintContext; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.awt.image.ColorModel; import javax.swing.JPanel; import org.jfree.chart.ChartPanel; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.StandardCategoryToolTipGenerator; import org.jfree.chart.plot.SpiderWebPlot; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.*; public class DemoChart extends ApplicationFrame { public DemoChart(String s) { super(s); JPanel jpanel = createDemoPanel(); jpanel.setPreferredSize(new Dimension(500, 270)); setContentPane(jpanel); } private static CategoryDataset createDataset() { String s1 = "First"; String s2 = "Second"; String s3 = "Third"; String s4 = "Forth"; String s5 = "Fivth"; String s6 = "Sixth"; String s7 = "Seventh"; String s8 = "Eighth"; String s9 = "Ninth"; String s10 = "Tenth"; DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); int count = 5; int value = 0; //String keyRow="s"; for (int i=1;i<=10;i++){ value = i*4; Comparable colKey = 0; String keyRow = "s"+i; for(int j=1;j<=count;j++){ colKey = j; defaultcategorydataset.addValue(value, keyRow, colKey); } } return defaultcategorydataset; } public static JFreeChart createChart1(CategoryDataset categorydataset,double d) { SpiderWebPlot plot = new SpiderWebPlot(categorydataset); Color bckColor1 = Color.decode("#4282CE"); //Light blue Paint p = new GradientPaint(0, 1, bckColor1, 0, 1, bckColor1); plot.setSeriesPaint(p); JFreeChart chart = new JFreeChart("", plot); return chart; } public static JPanel createDemoPanel() { JFreeChart jfreechart = createChart1(createDataset(), 10D); return new ChartPanel(jfreechart); } public static void main(String args[]) { DemoChart spiderwebchartdemo1 = new DemoChart("JFreeChart: SpiderWebChartDemo1.java"); spiderwebchartdemo1.pack(); RefineryUtilities.centerFrameOnScreen(spiderwebchartdemo1); spiderwebchartdemo1.setVisible(true); } } 

请尽快帮助我,我需要在明天之前发送这个版本。感谢你提前帮助并努力看到这个。

我想在同一个图表上覆盖几个蜘蛛图。

检查蜘蛛网图如何用于显示多变量数据可能会有所帮助。 下面的简化示例仅比较了两个OBSERVATIONS ,每个OBSERVATIONS都有五个名为A .. E VARIABLES ,其中随机值的范围为1 .. 3 。 偶然的,变量B的值重合; 其余的不同。 您可以调整OBSERVATIONS值以查看效果,但随着观察数量的增加,结果会逐渐变得混乱。 您可能希望根据此处的建议更改系列可见性,或者考虑这些替代方案 。

蜘蛛网情节

 import java.awt.EventQueue; import java.util.Random; import javax.swing.JPanel; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.SpiderWebPlot; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; /** @see https://stackoverflow.com/a/32885067/230513 */ public class SpiderChart extends ApplicationFrame { private static final int OBSERVATIONS = 2; private static final int VARIABLES = 5; private static final Random r = new Random(); public SpiderChart(String s) { super(s); add(createDemoPanel()); } private static CategoryDataset createDataset() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); for (int i = 1; i <= OBSERVATIONS; i++) { String rowKey = "Observation " + i; for (int j = 1; j <= VARIABLES; j++) { Comparable colKey = Character.valueOf((char)(j+64)); dataset.addValue(r.nextInt(3) + 1, rowKey, colKey); } } return dataset; } public static JFreeChart createChart(CategoryDataset dataset) { SpiderWebPlot plot = new SpiderWebPlot(dataset); JFreeChart chart = new JFreeChart("Test", plot); return chart; } public static JPanel createDemoPanel() { JFreeChart jfreechart = createChart(createDataset()); return new ChartPanel(jfreechart); } public static void main(String args[]) { EventQueue.invokeLater(() -> { SpiderChart demo = new SpiderChart("SpiderWebChart"); demo.pack(); demo.setDefaultCloseOperation(EXIT_ON_CLOSE); demo.setVisible(true); }); } }