Java 用JFreeChart实现蜘蛛图
我正在开发一个程序,从JSliders收集大约20个滑块值(从值-4到0的坏滑块和从0到+4的好滑块) 看起来像这样: 我的程序在一个数组中收集所有这20个滑块,捕捉更改的滑块的值 因此,程序应该创建一个图表来查看这些值。因此,我必须使用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
蜘蛛图
,您可以在这里看到:
蜘蛛
我制作了一个集合,将我的系列添加到图表中:
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 <代码>以简化实时更新。