2015-04-02 5 views
0

В настоящее время я использую библиотеку GRAL для построения графиков строк и данных. По какой-то причине у меня возникают проблемы с графикой нескольких строк на одном и том же графике XY. Вот мой код:Построение нескольких графиков в GRAL

import java.awt.Color; 
import javax.swing.JFrame; 
import de.erichseifert.gral.data.DataTable; 
import de.erichseifert.gral.plots.XYPlot; 
import de.erichseifert.gral.plots.lines.DefaultLineRenderer2D; 
import de.erichseifert.gral.plots.lines.LineRenderer; 
import de.erichseifert.gral.plots.points.PointRenderer; 
import de.erichseifert.gral.ui.InteractivePanel; 

public class GraphTest extends JFrame { 
public GraphTest(double x1, double y1) { 

    //SETS DEFAULTS FOR JFRAME 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setSize(600, 400); 

    //CREATES A DATA TABLE AND RUNS A LOOP TO INCREMENTALLY PLOT OUT POINTS OF A SINE CURVE ON THE STEP .25 
    DataTable data = new DataTable(Double.class, Double.class); 
    for (double x = -5.0; x <= 5.0; x+=0.25) { 
     double y = 5.0*Math.sin(x); 
     data.add(x, y); 
    } 

    //PLOT OUT DATA AND SET XYPLOT IN JFRAME, THEN CONNECT LINES AND CHANGE COLORS 
    XYPlot plot = new XYPlot(data); 
    getContentPane().add(new InteractivePanel(plot)); 
    LineRenderer lines = new DefaultLineRenderer2D(); 
    plot.setLineRenderer(data, lines); 
    Color color = new Color(0.0f, 0.3f, 1.0f); 
    plot.getPointRenderer(data).setColor(color); 
    plot.getLineRenderer(data).setColor(color); 

    //PLOT OUT A POINT (4,5) ON THE SAME GRAPH AS THE SINE GRAPH 
    DataTable data2 = new DataTable(Double.class, Double.class); 
    data2.add(x1, y1); 
    XYPlot plot2 = new XYPlot(data2); 
    //getContentPane().add(new InteractivePanel(plot2)); 
    //plot2.setLineRenderer(data2, lines); 
    //plot2.getPointRenderer(data2).setColor(color); 
    //plot2.getLineRenderer(data2).setColor(color); 
} 

public static void main(double x1, double y1) { 
    GraphTest frame = new GraphTest(x1, y1); 
    frame.setVisible(true); 
} 
} 

Программа прекрасно работает так, как она есть, но я не-комментарий следующих строк, чтобы сделать его построить два графика на одном участке:

//getContentPane().add(new InteractivePanel(plot2)); 
    //plot2.setLineRenderer(data2, lines); 
    //plot2.getPointRenderer(data2).setColor(color); 
    //plot2.getLineRenderer(data2).setColor(color); 

И в JFrame просто гаснет, и программа, похоже, замерзает. Я новичок в библиотеке GRAL (я только начал использовать его сегодня), поэтому, пожалуйста, извините, что мне не хватает опыта. Кроме того, FYI, этот код, запускаемый через команду в том же пакете, но еще один класс со следующим кодом:

GraphTest.main(4,5); 

Проблема заключается в том, что я просто я действительно не знаю, как построить два графика (синусоидальный кривой и точка) на том же графике XY. Наконец, здесь есть образ того, что текущий код выглядит при запуске:

enter image description here

Спасибо заранее.

ответ

1

Это старый вопрос, но вот как я решил такую ​​же проблему:

В той части, где вы создаете XY Plot, просто добавить больше источников данных.

От

XYPlot plot = new XYPlot(data); 

Для

XYPlot plot = new XYPlot(data, moreData); 

Убедитесь, что стиль обеих точек данных индивидуально.

+0

Извините, что ранее не отвечал на мой вопрос, но позже я понял это. Но все равно спасибо. – agillgilla

Смежные вопросы