2017-02-22 1 views
0

코드로 계산 된 값에서 XY 차트를 생성 할 수있는 응용 프로그램을 만들려고합니다.코드로 계산 된 배열을 사용한 그래프 플로팅

기본적으로 차트에 플롯 할 6 개의 시리즈가 있습니다. 나는 따라 갔다. androidplot tutorial

결국 차트의 X 축을 플로팅하려 할 때, 나는 어떻게 할 것인가에 어려움을 겪었다. 좀 도와 줄 수 있겠 니? 튜토리얼을 따라도 이것을 수행하는 방법을 모른다.

코드는 다음과 같이 구성됩니다. 사용자 데이터 입력,이 데이터에서 프로그램은 여러 계산을 수행하고 배열을 생성합니다. 나는이 어레이들을 플로팅하고 싶다.

Arrays: (
    Momento_dominio1(), 
    Normal_dominio1() 
), (
    Momento_dominio2(), 
    Normal_dominio2() 
),(
    Momento_dominio3(), 
    Normal_dominio3() 
) 

각각은 public double에 있고 배열을 반환합니다. 다음

코드

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_resultado); 

     graph = (XYPlot) findViewById(R.id.graph); 

     XYSeries dominio1 = new SimpleXYSeries(Arrays.asList(this.Momento_Dominio1()), Arrays.asList(this.Normal_Dominio1()), "Domínio 1"); 
     XYSeries dominio2 = new SimpleXYSeries(Arrays.asList(this.Momento_Dominio2()), Arrays.asList(this.Normal_Dominio2()), "Domínio 2"); 
     XYSeries dominio3 = new SimpleXYSeries(Arrays.asList(this.Momento_Dominio3()), Arrays.asList(this.Normal_Dominio3()), "Domínio 3"); 

     LineAndPointFormatter dominio1Format = new LineAndPointFormatter(Color.RED, Color.GREEN, Color.BLUE, null); 
     LineAndPointFormatter dominio2Format = new LineAndPointFormatter(Color.GREEN, Color.GREEN, Color.BLUE, null); 
     LineAndPointFormatter dominio3Format = new LineAndPointFormatter(Color.BLUE, Color.GREEN, Color.BLUE, null); 

     dominio1Format.getLinePaint().setPathEffect(new DashPathEffect(new float[] { 
       PixelUtils.dpToPix(10), 
       PixelUtils.dpToPix(10)}, 0)); 

     dominio2Format.getLinePaint().setPathEffect(new DashPathEffect(new float[] { 
       PixelUtils.dpToPix(10), 
       PixelUtils.dpToPix(10)}, 0)); 

     dominio3Format.getLinePaint().setPathEffect(new DashPathEffect(new float[] { 
       PixelUtils.dpToPix(10), 
       PixelUtils.dpToPix(10)}, 0)); 


     dominio1Format.setInterpolationParams(new CatmullRomInterpolator.Params(10, CatmullRomInterpolator.Type.Centripetal)); 
     dominio2Format.setInterpolationParams(new CatmullRomInterpolator.Params(10, CatmullRomInterpolator.Type.Centripetal)); 
     dominio3Format.setInterpolationParams(new CatmullRomInterpolator.Params(10, CatmullRomInterpolator.Type.Centripetal)); 

     graph.addSeries(dominio1, dominio1Format); 
     graph.addSeries(dominio2, dominio2Format); 
     graph.addSeries(dominio3, dominio3Format); 
     } 

내가 Momento_dominio1 및 Normal_dominio1 (이 다른 사람에게 적용 Momento_dominio2, Momento_dominio3, Normal_dominio2 및 Normal_dominio3가)

public double Normal_Dominio1() { 

     angulo_variavel_dominio1 = 0; 

     for (i=0; i<100; i++){ 

      Normal_dominio1 = this.Normal_Aco_Compressao_Dominio1() + this.Normal_Aco_Tracao_Dominio1(); // Como ambos estão em tração, o sinal é positivo 

      Normal_vetor_dominio1[i] = Normal_dominio1; // O for é composto por 100 passadas, logo, cada passada deve ser salvo em uma parte do vetor 

      angulo_variavel_dominio1 = angulo_variavel_dominio1 + (this.Angulo_Dominio1_Secao()/100); 

     } 

     return Normal_vetor_dominio1[i]; 

    } 


public double Momento_Dominio1() { 

     angulo_variavel_dominio1 = 0; 

     for (i=0; i<100; i++){ 

       Momento_dominio1 = -this.Momento_Aco_Compressao_Dominio1() + this.Momento_Aco_Tracao_Dominio1(); // Como ambos estão em tração, o sinal é positivo 

       Momento_vetor_dominio1[i] = Momento_dominio1; // O for é composto por 100 passadas, logo, cada passada deve ser salvo em uma parte do vetor 

       angulo_variavel_dominio1 = angulo_variavel_dominio1 + (this.Angulo_Dominio1_Secao()/100); 

     } 

     return Momento_vetor_dominio1[i]; 

    } 
+0

문제의 구체적인 특성을 이해하는 데 약간의 문제가 있습니다.하지만 yVals와 함께 xVals를 포함하는 방법에 어려움을 겪고있는 것 같습니다. – Nick

+0

정확! X 축을 추적하는 부분은 내가 이해하는 한 코드 상단에 있습니다. –

답변

0

것 같습니다 계산하는 데 사용되는 대중 있습니다 각 시리즈를 설정할 때 yVals 만 포함하는 것처럼 :

XYSeries dominio1 = new SimpleXYSeries(
    Arrays.asList(this.Momento_Dominio1()), 
    SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, 
    "Domínio 1"); 

인수는 각 yVal의 색인 (iVal)을 사용하여 Androidplot이 자동으로 xVals를 생성하도록 지시합니다. 자신의 xVals를 포함하려면이 대신 같은 SimpleXYSeries 인스턴스화 것 :

XYSeries dominio1 = new SimpleXYSeries(
    Arrays.asList(yourXValsArray), 
    Arrays.asList(yourYValsArray), 
    "Domínio 1"); 

this doc의 SimpleXYSeries 부분은 자세한 내용을 가지고 당신이 그것을 필요로하는 경우에.

+0

좋습니다. 나는 이것을했지만 왜 "3 정점 미만의 시리즈를 보간 할 수 없습니까?"라는 오류를 알려주지 못했습니다. 그것이 무엇인지 알 수 있습니까? –

+0

XYSeries에 두 개 이하의 값이 있고 보간을 사용하면이 오류가 발생합니다. 'setInterpolationParams'에 대한 호출을 제거하면 오류가 사라집니다. – Nick

+0

죄송합니다. 오류가 계속 발생합니다. 내가 뭔가 잘못하고있는 중이 야 .... 여기 코드를 업데이트하면 보일거야, 닉? 나는 이미 선의를 악용하고 있지만, 나는 정말로 신원을 밝히지 않고 있습니다. –