Java 用JFreeChart实现蜘蛛图

Java 用JFreeChart实现蜘蛛图,java,charts,web-crawler,jfreechart,Java,Charts,Web Crawler,Jfreechart,我正在开发一个程序,从JSliders收集大约20个滑块值(从值-4到0的坏滑块和从0到+4的好滑块) 看起来像这样: 我的程序在一个数组中收集所有这20个滑块,捕捉更改的滑块的值 因此,程序应该创建一个图表来查看这些值。因此,我必须使用蜘蛛图,您可以在这里看到: 蜘蛛 我制作了一个集合,将我的系列添加到图表中: final XYSeriesCollection数据集=新XYSeriesCollection();dataset.addSeries(r1);dataset.addSeries(r

我正在开发一个程序,从JSliders收集大约20个滑块值(从值-4到0的坏滑块和从0到+4的好滑块) 看起来像这样:

我的程序在一个数组中收集所有这20个滑块,捕捉更改的滑块的值

因此,程序应该创建一个图表来查看这些值。因此,我必须使用
蜘蛛图
,您可以在这里看到: 蜘蛛

我制作了一个集合,将我的系列添加到图表中:
final XYSeriesCollection数据集=新XYSeriesCollection();dataset.addSeries(r1);dataset.addSeries(r2)
通过JFreeChart将数据集添加到我的图表

designed a plot: final XYPlot plot = xylineChart.getXYPlot();

coded my axis:
` ValueAxis domainAxis = plot.getDomainAxis(); // y
ValueAxis rangeAxis = plot.getRangeAxis(); // x

  domainAxis.setRange(0.0, 1.0);
  ((NumberAxis) domainAxis).setTickUnit(new NumberTickUnit(0.5));
  rangeAxis.setRange(0.0, 1.0);
  ((NumberAxis) rangeAxis).setTickUnit(new NumberTickUnit(0.5));

  plot.getRangeAxis().setRange(-4, 4); // Y Achse Range 
  plot.getDomainAxis().setRange(-4,4);   
  final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
 // renderer.setSeriesShapesVisible(0, false);
  renderer.setSeriesPaint( 0 , Color.RED );
  renderer.setSeriesLinesVisible(0, false);
  renderer.setSeriesPaint( 1 , Color.GREEN );
  renderer.setSeriesLinesVisible(1, false);
  plot.setRenderer(renderer);

所以我现在的问题是,如何在蜘蛛图的正确位置显示点

我必须为这里的每个点添加坐标系吗

例如,我想显示
sozialer Druck
(=社会压力)我从上方
-4
的滑块值,然后我必须为
-3
设置坐标
(-3/-2)
,然后为每个点设置
(-2.6,-1.6)
,依此类推

有谁能帮我把这件事简化一点吗?(不幸的是,我无法将背景图形更改为条形图或其他更简单的图形)

谢谢大家!! @luxora

基于此,以下是帮助我解决类似问题的完整代码:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
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.BufferedImage;
import java.awt.image.ColorModel;

import javax.swing.JPanel;

import org.jfree.chart.ChartPanel;
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.chart.ui.ApplicationFrame;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

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<=8;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) {
        Color bckColor1 = Color.decode("#4282CE"); //Light blue
        Paint p = new GradientPaint(0, 1, bckColor1, 0, 1, bckColor1);

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(35.0, "S1", "u");
        dataset.addValue(45.0, "S1", "r");
        dataset.addValue(2.0, "S1", "b");
        dataset.addValue(75.0, "S1", "t");
        dataset.addValue(25.0, "S1", "l");
        dataset.addValue(95.0, "S1", "bla");
        dataset.addValue(15.0, "S1", "bla");
        dataset.addValue(45.0, "S1", "bla");
        SpiderWebPlot plot = new SpiderWebPlot(dataset);
        JFreeChart chart = new JFreeChart(plot);
        boolean success = false;
        try {
            BufferedImage image = new BufferedImage(200 , 100, 
                    BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = image.createGraphics();
            chart.draw(g2, new Rectangle2D.Double(0, 0, 200, 100), null, null);
            g2.dispose();
            success = true;
        }
        catch (Exception e) {
            success = false;
        }
        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();
        spiderwebchartdemo1.setVisible(true);
    }
}
import java.awt.BasicStroke;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Font;
导入java.awt.GradientPaint;
导入java.awt.Graphics2D;
导入java.awt.Paint;
导入java.awt.PaintContext;
导入java.awt.Rectangle;
导入java.awt.RenderingHints;
导入java.awt.geom.AffineTransform;
导入java.awt.geom.Rectangle2D;
导入java.awt.image.buffereImage;
导入java.awt.image.ColorModel;
导入javax.swing.JPanel;
导入org.jfree.chart.ChartPanel;
导入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.chart.ui.ApplicationFrame;
导入org.jfree.data.category.CategoryDataset;
导入org.jfree.data.category.DefaultCategoryDataset;
公共类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;我查看此视图,以查看
分类数据集
值如何显示在
SpiderWebPlot
中。谢谢你,兄弟,我将为此给你一个虚拟比特币或更好的啤酒币-你为我节省了大量工作…获得了这些源代码并找到了我的解决方案…/32885067#32885067很高兴你对其进行了排序。注意
pdfbox
i不需要。考虑让数据集实现<代码> ChangeListener <代码>以简化实时更新。