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

标签 java swing jpanel awt jfreechart

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

enter image description here

在此之上,我需要使用 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);
    }
}

请尽快帮助我,我需要在明天之前发送此版本 预先感谢您为实现这一目标所提供的帮助和努力。

最佳答案

I want to override few more spider graphs on the same chart.

检查spider web plot如何可能会有所帮助用于显示多变量数据。下面的简化示例仅比较两个 OBSERVATIONS,每个观测有五个名为 A .. EVARIABLES,随机值在 1 范围内.. 3。碰巧,变量 B 的值一致;其余的有所不同。您可以调整 OBSERVATIONS 的值来查看效果,但随着观察数量的增加,结果会逐渐变得更加困惑。您可能想要更改系列可见性,如建议的 here ,或考虑这些alternatives .

spider web plot

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);
        });
    }
}

关于java - 如何在现有 JfreeChart 上方绘制蜘蛛图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32862913/

相关文章:

java - 带有“确定”按钮的消息框错误 - 字符串被截断

java - 如何重命名 JList 中的 Object[] 列表

java - JPanel 调整大小显示另一个 JPanel

java - 自动将 Oracle 表中的数组列表添加到 JTable

Java:Morphia 用新字段值更新集合有多容易

java - 水平扩展JTree

java - Java中如何从另一个字符串中删除重复的字符串?

java - 退出弹出窗口时防止调用 mouseExited

java - 更改 JPanel 默认图形

java - MarkLogic TCP 连接