如何画一个现有的JFreeChart以上spiderchart [英] How to draw a spiderchart above a existing JfreeChart

查看:487
本文介绍了如何画一个现有的JFreeChart以上spiderchart的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个jfree图,我可以生成每次我运行code。
现在我想覆盖在同一图表上几个蜘蛛图。请帮我该怎么做。

在这里输入的形象描述

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

下面是我的code做这个图表。

 包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 {    公共DemoChart(String s)将
    {
        超(S);
        的JPanel的JPanel = createDemoPanel();
        jpanel.set preferredSize(新尺寸(500,270));
        setContentPane(JPanel的);
    }    私有静态CategoryDataset createDataset()
    {
        串S =第一;
        字符串s2 =秒;
        串S =三;
        串S4 =福斯
        串S5 =Fivth;
        串S6 =第六届
        字符串S7 =第七届;
        字符串S8 =八五
        字符串S9 =九五;
        字符串S10 =十五;        DefaultCategoryDataset defaultcategorydataset =新DefaultCategoryDataset();
        诠释计数= 5;
        int值= 0;
        //串keyRow =S;
        的for(int i = 1; I< = 10;我++){
            值= I * 4;
            可比colKey = 0;
            字符串keyRow =S+我;
            对于(INT J = 1; J< =计数; J ++){
            colKey = j的;
                defaultcategorydataset.addValue(值,keyRow,colKey);
            }
        }
返回defaultcategorydataset;
    }    公共静态的JFreeChart createChart1(CategoryDataset categorydataset,双D){
        SpiderWebPlot情节=新SpiderWebPlot(categorydataset);
        颜色bckColor1 = Color.de code(#4282CE); //浅蓝
        涂料P =新的GradientPaint(0,1,bckColor1,0,1,bckColor1);
        plot.setSeriesPaint(P);
        JFreeChart的图表=新的JFreeChart(,情节);
        返回图;
    }
    公共静态的JPanel createDemoPanel()
    {
        JFreeChart的jfreechart的= createChart1(createDataset(),10D);
        返回新ChartPanel(JFreeChart的);
    }    公共静态无效的主要(字符串ARGS [])
    {
        DemoChart spiderwebchartdemo1 =新DemoChart(JFreeChart的:SpiderWebChartDemo1.java);
        spiderwebchartdemo1.pack();
        RefineryUtilities.centerFrameOnScreen(spiderwebchartdemo1);
        spiderwebchartdemo1.setVisible(真);
    }
}

请尽快帮助我,我需要通过明天寄这个版本
感谢ü提前帮助,并采取努力,看到这一点。


解决方案

  

我要重写在同一图表上几个蛛网图。


它可以帮助检查一个蜘蛛网情节是如何用来显示多元数据。下面的简单的例子只是比较两个意见,每个有五个变量名为 A ..Ë ,随着范围的随机值 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;/ ** @see http://stackoverflow.com/a/32885067/230513 * /
公共类SpiderChart扩展ApplicationFrame {    私有静态最终诠释意见= 2;
    私有静态最终诠释变量= 5;
    私有静态最终随机R =新的随机();    公共SpiderChart(String s)将{
        超(S);
        添加(createDemoPanel());
    }    私有静态CategoryDataset createDataset(){        DefaultCategoryDataset数据=新DefaultCategoryDataset();
        的for(int i = 1; I< =意见;我++){
            字符串rowKey =观察+我;
            对于(INT J = 1; J< =变量; J ++){
                可比colKey = Character.valueOf((炭)(J + 64));
                dataset.addValue(r.nextInt(3)+ 1,rowKey,colKey);
            }
        }
        返回的数据集;
    }    公共静态的JFreeChart createChart(CategoryDataset数据集){
        SpiderWebPlot情节=新SpiderWebPlot(数据);
        JFreeChart的图表=新的JFreeChart(测试,情节);
        返回图;
    }    公共静态的JPanel createDemoPanel(){
        JFreeChart的jfreechart的= createChart(createDataset());
        返回新ChartPanel(JFreeChart的);
    }    公共静态无效的主要(字符串ARGS []){
        EventQueue.invokeLater(() - > {
            SpiderChart演示=新SpiderChart(SpiderWebChart);
            demo.pack();
            demo.setDefaultCloseOperation(EXIT_ON_CLOSE);
            demo.setVisible(真);
        });
    }
}

I have one a jfree chart which I can generate everytime I run the code. Now i want to override few more spider graphs on the same chart. please help me how to do that

Above this i need to add one more spider chart using jfree.

Here is my code for doing this chart.

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

Please help me as soon as possible i need to send this build by tomorrow Thank u in advance for helping and taking efforts to see this.

解决方案

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

It may help to examine how a spider web plot is used to display multivariate data. The simplified example below compares just two OBSERVATIONS, each having five VARIABLES named A .. E, with random values in the range 1 .. 3. By chance, the values for variable B coincide; the rest differ. You can adjust the value of OBSERVATIONS to see the effect, but the result becomes progressively more muddled as the number of observations grows. You may want to alter series visibility, as suggested here, or consider these alternatives.

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 http://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);
        });
    }
}

这篇关于如何画一个现有的JFreeChart以上spiderchart的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆