2016-09-30 3 views
0

나는 MPAndroidChart 라이브러리를 사용하여 막대 차트를 매우 쉽게 만들었으며 아래 예제를 실험했습니다. 내 응용 프로그램의 실제 데이터를이 막대 그래프에 연결하는 방법에 대한 정보를 찾는 데 어려움을 겪고 있습니다. 예, 점수 골키퍼 앱. a 팀과 b 팀의 막대 그래프에 매일 최종 점수를 표시하는 방법은 무엇입니까? 내 앱에는 두 팀의 점수가 표시되지만 표시된 최종 점수를이 코드로 전송하는 방법은 무엇입니까? (나는 단지 6 주 동안 안드로이드 개발을하고 있었다).막대 그래프에 실제 데이터 추가 : Android Studio

/*Displays the given score for Team A.*/ 
    public void displayForTeamB(int score) { 
      TextView scoreView = (TextView) findViewById(R.id.team_a_score); 
      scoreView.setText(String.valueOf(score)); 
     } 


    repositories { 
     maven { url "https://jitpack.io" } 
    } 

    dependencies { 
     compile 'com.github.PhilJay:MPAndroidChart:v2.0.9' 
    } 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:paddingLeft="@dimen/activity_horizontal_margin" 
        android:paddingRight="@dimen/activity_horizontal_margin" 
        android:paddingTop="@dimen/activity_vertical_margin" 
        android:paddingBottom="@dimen/activity_vertical_margin" 
        tools:context=".MainActivity"> 

     <com.github.mikephil.charting.charts.BarChart 
      android:id="@+id/chart" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

    </RelativeLayout> 

    package com.truiton.mpchartexample; 

    import android.graphics.Color; 
    import android.os.Bundle; 
    import android.support.v7.app.ActionBarActivity; 

    import com.github.mikephil.charting.charts.BarChart; 
    import com.github.mikephil.charting.data.BarData; 
    import com.github.mikephil.charting.data.BarDataSet; 
    import com.github.mikephil.charting.data.BarEntry; 
    import com.github.mikephil.charting.utils.ColorTemplate; 

    import java.util.ArrayList; 

    public class MainActivity extends ActionBarActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      BarChart chart = (BarChart) findViewById(R.id.chart); 

      BarData data = new BarData(getXAxisValues(), getDataSet()); 
      chart.setData(data); 
      chart.setDescription("My Chart"); 
      chart.animateXY(2000, 2000); 
      chart.invalidate(); 
     } 

     private ArrayList<BarDataSet> getDataSet() { 
      ArrayList<BarDataSet> dataSets = null; 

      ArrayList<BarEntry> valueSet1 = new ArrayList<>(); 
      BarEntry v1e1 = new BarEntry(110.000f, 0); // Jan 
      valueSet1.add(v1e1); 


      ArrayList<BarEntry> valueSet2 = new ArrayList<>(); 
      BarEntry v2e1 = new BarEntry(150.000f, 0); // Jan 
      valueSet2.add(v2e1); 


      BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Brand 1"); 
      barDataSet1.setColor(Color.rgb(0, 155, 0)); 
      BarDataSet barDataSet2 = new BarDataSet(valueSet2, "Brand 2"); 
      barDataSet2.setColors(ColorTemplate.COLORFUL_COLORS); 

      dataSets = new ArrayList<>(); 
      dataSets.add(barDataSet1); 
      dataSets.add(barDataSet2); 
      return dataSets; 
     } 

     private ArrayList<String> getXAxisValues() { 
      ArrayList<String> xAxis = new ArrayList<>(); 
      xAxis.add("JAN"); 
      xAxis.add("FEB"); 
      xAxis.add("MAR"); 
      xAxis.add("APR"); 
      xAxis.add("MAY"); 
      xAxis.add("JUN"); 
      return xAxis; 
     } 
    } 

답변

1

코드를 보면 기본 그래프 인터페이스를 이미 설정할 수 있습니다. 그래서 저는 코드에서이 샘플처럼 보이는 점수 선에 대한 항목을 지정하는 데 필요한 코드 만 작성합니다.

 // creating list of entry 
     ArrayList<Entry> entries = new ArrayList<>(); 
     entries.add(new Entry(100f, 0)); 
     entries.add(new Entry(1000f, 1)); 
     entries.add(new Entry(600f, 2)); 
     entries.add(new Entry(1500f, 3)); 
     entries.add(new Entry(3500f, 4)); 


     final LineDataSet dataset = new LineDataSet(entries, ""); 
     dataset.setDrawCircles(true); 
     dataset.setDrawCubic(true); 
     dataset.setLineWidth(7f); 
     dataset.setValueTextColor(getResources().getColor(R.color.colorAccent)); 
     dataset.setColor(Color.parseColor("#ED1A4D")); 
     dataset.setValueTextSize(14f); 
     dataset.setCircleColor(Color.parseColor("#ED1A4D")); 
     dataset.setCircleRadius(7f); 
     dataset.setCircleColorHole(0); 

// creating labels 
     final ArrayList<String> labels = new ArrayList<String>(); 
     labels.add("12AM"); 
     labels.add("06AM"); 
     labels.add("12PM"); 
     labels.add("06PM"); 
     labels.add("12AM"); 


     List<ILineDataSet> dataSetslist = new ArrayList<ILineDataSet>(); 
     dataSetslist.add(dataset); 

LineData data = new LineData(labels, dataSetslist); 


lineChart.setData(data); // set the data and list of lables into chart 
     lineChart.animateY(1500); 
     lineChart.setDescription("Daily report"); 
     lineChart.setScaleEnabled(false); 

아직 도움이 더 필요하면 도움이되기를 바랍니다.

+0

감사합니다. 나는 여전히 사용자 입력으로부터 실시간 데이터를 추가하기 위해 코드를 수정하는 방법을 이해하지 못한다. 지금이 순간 나의 이해 범위를 넘어선 것입니다. 나는 그런 작은 경험으로 너무 많이하려고 노력하고있다. 어쨌든 고마워. – GAK76

+0

걱정할 필요가 없습니다! 모두는 어딘가에서 시작해야합니다. . . 나는 또한 중급이 되려고하는 초보자입니다. 원하는 경우 완전한 샘플 코드를 제공 할 수 있습니다. –

관련 문제