2016-07-29 6 views

Antwort

2

dies die Arbeit für Sie versuchen, auf diese Weise

http://www.truiton.com/2015/04/android-chart-example-mp-android-chart-library/

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); 
     BarEntry v1e2 = new BarEntry(40.000f, 1); // Feb 
     valueSet1.add(v1e2); 
     BarEntry v1e3 = new BarEntry(60.000f, 2); // Mar 
     valueSet1.add(v1e3); 
     BarEntry v1e4 = new BarEntry(30.000f, 3); // Apr 
     valueSet1.add(v1e4); 
     BarEntry v1e5 = new BarEntry(90.000f, 4); // May 
     valueSet1.add(v1e5); 
     BarEntry v1e6 = new BarEntry(100.000f, 5); // Jun 
     valueSet1.add(v1e6); 

     ArrayList<BarEntry> valueSet2 = new ArrayList<>(); 
     BarEntry v2e1 = new BarEntry(150.000f, 0); // Jan 
     valueSet2.add(v2e1); 
     BarEntry v2e2 = new BarEntry(90.000f, 1); // Feb 
     valueSet2.add(v2e2); 
     BarEntry v2e3 = new BarEntry(120.000f, 2); // Mar 
     valueSet2.add(v2e3); 
     BarEntry v2e4 = new BarEntry(60.000f, 3); // Apr 
     valueSet2.add(v2e4); 
     BarEntry v2e5 = new BarEntry(20.000f, 4); // May 
     valueSet2.add(v2e5); 
     BarEntry v2e6 = new BarEntry(80.000f, 5); // Jun 
     valueSet2.add(v2e6); 

     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; 
    } 
} 
+0

danke @ Aditya. Wie könnte ich innere Linien vor Bar Chat verstecken? – pb123

+0

@ pb123 http://stackoverflow.com/questions/32821912/mp-android-chart-displaying-float-values-at-x-axis-of-horizontal-bar-chart –

5

Verwenden Sie diese Bibliothek https://github.com/PhilJay/MPAndroidChart

diese zu Ihrer App hinzufügen build.gradle:

dependencies { 
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1' 
} 

enter image description here

+0

@ pb123 Ist Ihr Problem gelöst? –

0

Hier ist die tatsächliche Lösung 2017 nach der MPAndroidChart-Bibliothek geändert.

1. Add

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

Und zu Ihrer App build.gradle

dependencies { 
     compile 'com.github.PhilJay:MPAndroidChart:v3.0.2' 
    } 

2. In Diagrammelement zu Ihrer Vorlage build.gradle:

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

3. In dem Fragmente onCreateView (oder Aktivität onCreate)

HorizontalBarChart chart = (HorizontalBarChart) view.findViewById(R.id.chart); 

    BarDataSet set1; 
    set1 = new BarDataSet(getDataSet(), "The year 2017"); 

    set1.setColors(Color.parseColor("#F78B5D"), Color.parseColor("#FCB232"), Color.parseColor("#FDD930"), Color.parseColor("#ADD137"), Color.parseColor("#A0C25A")); 

    ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>(); 
    dataSets.add(set1); 

    BarData data = new BarData(dataSets); 

    // hide Y-axis 
    YAxis left = chart.getAxisLeft(); 
    left.setDrawLabels(false); 

    // custom X-axis labels 
    String[] values = new String[] { "1 star", "2 stars", "3 stars", "4 stars", "5 stars"}; 
    XAxis xAxis = chart.getXAxis(); 
    xAxis.setValueFormatter(new MyXAxisValueFormatter(values)); 

    chart.setData(data); 

    // custom description 
    Description description = new Description(); 
    description.setText("Rating"); 
    chart.setDescription(description); 

    // hide legend 
    chart.getLegend().setEnabled(false); 

    chart.animateY(1000); 
    chart.invalidate(); 

4. Schließlich mit Diagramm einiger benutzerdefinierten Klassen und Funktionen zu dem Fragmente \ Activity hinzuzufügen:

public class MyXAxisValueFormatter implements IAxisValueFormatter { 

    private String[] mValues; 

    public MyXAxisValueFormatter(String[] values) { 
     this.mValues = values; 
    } 

    @Override 
    public String getFormattedValue(float value, AxisBase axis) { 
     return mValues[(int) value]; 
    } 

} 

private ArrayList<BarEntry> getDataSet() { 

    ArrayList<BarEntry> valueSet1 = new ArrayList<>(); 

    BarEntry v1e2 = new BarEntry(1, 4341f); 
    valueSet1.add(v1e2); 
    BarEntry v1e3 = new BarEntry(2, 3121f); 
    valueSet1.add(v1e3); 
    BarEntry v1e4 = new BarEntry(3, 5521f); 
    valueSet1.add(v1e4); 
    BarEntry v1e5 = new BarEntry(4, 10421f); 
    valueSet1.add(v1e5); 
    BarEntry v1e6 = new BarEntry(5, 27934f); 
    valueSet1.add(v1e6); 

    return valueSet1; 
} 

5 Mein Ergebnis:

Result

Verwandte Themen