2017-10-31 16 views
0

두 개의 배열로 JFreeChart를 사용하여 선 그래프를 그리는 방법. 하나는 x 좌표 용이고 다른 하나는 y 좌표 용입니다. 내가 두 배열을 제공하는 두 가지 기능이 있습니다. 그 배열을 사용하여 선 그래프를 그려보고 싶습니다. 가능한 방법이 있습니다.두 개의 배열을 사용하여 XYLineChart 그래프를 그리는 방법 : x 및 y 좌표에 하나

XYSeries series = new XYSeries(" "); 
for(int i=((fIndex-1)*2);i<=((tIndex*2)-1);i+=2) 
{ 
    series.add(xTValue[i],yTValue[i]); 
} 
XYSeriesCollection dataset = new XYSeriesCollection(); 
dataset.addSeries(series); 
return dataset; 

위 코드와 같이 처리 할 수 ​​있습니까? 특별히 해달라고 XYLineChart이, 당신은 (당신이 선 그림을 원하는 알고 있지만이에 쉬운 방법입니다 FastScatterPlot를 서브 클래 싱하여이 작업을 수행 할 수 있습니다 필요한 경우

+0

아마도 분산 형 플롯입니까? – trashgod

+0

아니오 XYLineChart를 음모로 꾸미고 싶습니다. – user6308908

+0

중복되지 않은 경우 수정 된 방법을 보여주는 [mcve]를 포함하도록 질문을 편집하십시오. – trashgod

답변

0

당신은, 또는

XYSeriesCollection dataset = new XYSeriesCollection(); 
XYSeries series = new DefaultXYSeries(); 
series.addSeries(" ", new double[][]{xTValue,yTValue}); 
dataset.addSeries(series); 
JFreeChart chart = ChartFactory.createXYLineChart("My chart title", 
     "my x-axis label", "my y-axis label", dataset); 

을 사용할 수 있습니다 - 당신은 선을 그릴 수있는 render() 메소드를 오버라이드 (override)), 다음과 같은 뭔가!

public class LinePlot extends FastScatterPlot { 
    private float[] x, y; 

    public LinePlot(float[] x, float[] y){ 
     super(); 
     this.x=x; 
     this.y=y; 
    } 

    @Override 
    public void render(final Graphics2D g2, final Rectangle2D dataArea, 
     final PlotRenderingInfo info, final CrosshairState crosshairState) { 

     // Get the axes 
     ValueAxis xAxis = getDomainAxis(); 
     ValueAxis yAxis = getRangeAxis(); 

     // Move to the first datapoint 
     Path2D line = new Path2D.Double(); 
     line.moveTo(xAxis.valueToJava2D(x[0], dataArea, RectangleEdge.BOTTOM), 
       yAxis.valueToJava2D(y[0], dataArea, RectangleEdge.LEFT)); 

     for (int i = 1; i<x.length; i++){ 
      //Draw line to next datapoint 
      line.lineTo(aAxis.valueToJava2D(x[i], dataArea, RectangleEdge.BOTTOM), 
        yAxis.valueToJava2D(y[i], dataArea, RectangleEdge.LEFT)); 
     } 
     g2.draw(line); 
    } 
} 

이 상당히 빈약 구현 - 예를 들어, x와 y는 포인트와 동일한 번호를 가지고 더 확인하지, 그리고 첨가하지 색상 등 (예 : g2.setPaint(myPaintColour) 또는 회선 유형 (예 : g2.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 10.0f, new float[] { 7, 3, 1, 3 }, 0.0f))-•-• 유형의 회선을 제공합니다)

+0

XYLineChart를 플롯하려고합니다. 그러나 산란 음모는 아닙니다. 그리고 나는 X와 Y에서 같은 수의 점을 가지고있다. – user6308908

+0

그 경우에는 다음과 같이'DefaultXYSeries'를 사용한다.'XYSeries series = new Default XYSeries(); – SteveR

+0

저는 JFreeChart를 처음 사용합니다. DefalutXYSeries – user6308908