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

Java 如何在现有JfreeChart上方绘制蜘蛛图,java,swing,jpanel,awt,jfreechart,Java,Swing,Jpanel,Awt,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.Gradient

我有一个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);
    }
}
包com.rectrix.exide.pdfbox;
导入java.awt.BasicStroke;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Font;
导入java.awt.GradientPaint;
导入java.awt.Paint;
导入java.awt.PaintContext;
导入java.awt.Rectangle;
导入java.awt.RenderingHints;
导入java.awt.geom.AffineTransform;
导入java.awt.geom.Rectangle2D;
导入java.awt.image.ColorModel;
导入javax.swing.JPanel;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.ChartUtilities;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.labels.StandardCategoryToolTipGenerator;
导入org.jfree.chart.plot.SpiderWebPlot;
导入org.jfree.chart.title.LegendTitle;
导入org.jfree.chart.title.TextTitle;
导入org.jfree.data.category.CategoryDataset;
导入org.jfree.data.category.DefaultCategoryDataset;
导入org.jfree.ui.*;
公共类DemoChart扩展了ApplicationFrame{
公共人口统计图(字符串s)
{
超级(s);
JPanel JPanel=createDemoPanel();
jpanel.setPreferredSize(新尺寸(500270));
setContentPane(jpanel);
}
私有静态CategoryDataset createDataset()
{
字符串s1=“第一”;
字符串s2=“秒”;
字符串s3=“第三”;
字符串s4=“Forth”;
字符串s5=“Fivth”;
字符串s6=“第六”;
字符串s7=“第七”;
字符串s8=“第八”;
字符串s9=“第九”;
字符串s10=“第十”;
DefaultCategoryDataset DefaultCategoryDataset=新的DefaultCategoryDataset();
整数计数=5;
int值=0;
//字符串keyRow=“s”;
对于(int i=1;i
我想在同一个图表上覆盖几个蜘蛛图

这可能有助于检查a如何用于显示多变量数据。下面的简化示例仅比较了两个
观测值
,每个观测值都有五个
变量
命名为
a..E
,随机值的范围为
1..3
。碰巧,变量
B
的值重合;其余变量不同。您可以调整<代码>观察值>代码>以查看效果,但随着观察次数的增长,结果会变得越来越混乱。您可能希望根据建议更改系列可见性,或考虑这些。

导入java.awt.EventQueue;
导入java.util.Random;
导入javax.swing.JPanel;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.plot.SpiderWebPlot;
导入org.jfree.data.category.CategoryDataset;
导入org.jfree.data.category.DefaultCategoryDataset;
导入org.jfree.ui.ApplicationFrame;
/**@见https://stackoverflow.com/a/32885067/230513 */
公共类SpiderChart扩展了ApplicationFrame{
私人静态最终int观测值=2;
私有静态最终int变量=5;
私有静态最终随机r=新随机();
公共蜘蛛图(字符串s){
超级(s);
添加(createDemoPanel());
}
私有静态CategoryDataset createDataset(){
DefaultCategoryDataset数据集=新的DefaultCategoryDataset();

对于(int i=1;我在你的图中看到了10个系列;为什么你不能添加一个11?如果我做了11个系列,我只会得到上一个现有图形之外的另一个星形图形。但我需要的是,我想在我现在绘制的10个系列星形图形上面显示一个不同读数的图形。
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);
        });
    }
}