2012-12-07 10 views
10

Hii ich zeige 4 Werte in einem Balkendiagramm an, wo jeder Balken eine andere Farbe hat.wenn ich den Graphen jeden Balken überlappend anzeigen. Ich möchte Platz zwischen den Bars machen, die ich mit setBarSpacing() versuchte, indem ich verschiedene Werte einsetzte, aber es funktioniert nicht. Es gibt irgendeine andere Idee.Wie Abstand zwischen Balken in Balkendiagramm mit Achartengine, wenn jeder Balken unterschiedliche Farbe ist, die verschiedene Werte enthält

package com.example.barchartview; 

import org.achartengine.ChartFactory; 
import org.achartengine.GraphicalView; 
import org.achartengine.chart.BarChart.Type; 
import org.achartengine.model.CategorySeries; 
import org.achartengine.model.XYMultipleSeriesDataset; 
import org.achartengine.renderer.XYMultipleSeriesRenderer; 
import org.achartengine.renderer.XYSeriesRenderer; 
import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.graphics.Color; 
import android.view.View; 
import android.widget.LinearLayout; 


@SuppressLint("ParserError") 
public class MainActivity extends Activity { 
    private GraphicalView BarChartView; 




    @SuppressLint("ParserError") 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     if (BarChartView==null) 
     { 

     XYMultipleSeriesRenderer renderer = buildBarRenderer(); 
     setChartSettings(renderer); 
     BarChartView = ChartFactory.getBarChartView(this, getBarDataset(), renderer, Type.DEFAULT); 
     LinearLayout playout = (LinearLayout) findViewById(R.id.graph2); 
     playout.addView(BarChartView); 
     ; 

     } 
     else 
     { 

      BarChartView.repaint(); 
      BarChartView.setVisibility(View.GONE); 


     } 
    } 

    private void setChartSettings(XYMultipleSeriesRenderer renderer) 
    { 
     renderer.setYTitle("Hits"); 
     renderer.setXAxisMin(0); 
     renderer.setXAxisMax(7); 
     renderer.setYAxisMin(0); 
     renderer.setYAxisMax(900); 

     } 
    private XYMultipleSeriesDataset getBarDataset() 
    { 
      int[] y = {624,430,712,323}; 
      CategorySeries series1 = new CategorySeries("A"); 
      CategorySeries series2 = new CategorySeries("B"); 
      CategorySeries series3 = new CategorySeries("C"); 
      CategorySeries series4 = new CategorySeries("D"); 


      XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 


        series1.add(y[0]); 
        dataset.addSeries(series1.toXYSeries()); 

        series2.add(y[1]); 
        dataset.addSeries(series2.toXYSeries()); 

        series3.add(y[2]); 
        dataset.addSeries(series3.toXYSeries()); 

        series4.add(y[3]); 
        dataset.addSeries(series4.toXYSeries()); 

       return dataset; 

    } 
    protected XYMultipleSeriesRenderer buildBarRenderer() { 
     XYMultipleSeriesRenderer mrenderer = new XYMultipleSeriesRenderer(); 

     double[] range = {0,5,0,5}; 

     mrenderer.setAxisTitleTextSize(16); 
     mrenderer.setChartTitleTextSize(20); 
     mrenderer.setLabelsTextSize(15); 
     mrenderer.setLegendTextSize(15); 
     mrenderer.setBarSpacing(0); 
     mrenderer.setXLabels(1); 
     mrenderer.addXTextLabel(2.5, ""); 
     mrenderer.setMargins(new int[] {20, 30, 15, 0}); 
     mrenderer.setAxesColor(Color.WHITE); 
     mrenderer.setChartTitle(""); 
     mrenderer.setXTitle(""); 
     mrenderer.setInitialRange(range, 1); 


     XYSeriesRenderer renderer1 = new XYSeriesRenderer(); 
     renderer1.setColor(Color.GREEN); 
     XYSeriesRenderer renderer2 = new XYSeriesRenderer(); 
     renderer2.setColor(Color.RED); 
     XYSeriesRenderer renderer3 = new XYSeriesRenderer(); 
     renderer3.setColor(Color.BLUE); 
     XYSeriesRenderer renderer4 = new XYSeriesRenderer(); 
     renderer4.setColor(Color.CYAN); 


     mrenderer.addSeriesRenderer(renderer1); 
     mrenderer.addSeriesRenderer(renderer2); 
     mrenderer.addSeriesRenderer(renderer3); 
     mrenderer.addSeriesRenderer(renderer4); 


      return mrenderer; 

    } 




} 

hier ist mein Code.

hier ist meine activity_main.xml Datei

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainActivity" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout android:id="@+id/graph2" 
     android:layout_width="160dip" 
     android:layout_height="200dip" 
     android:scaleType="fitEnd" 
     android:layout_marginTop="40dip" 
     android:layout_marginLeft="790dip"/> 

    </RelativeLayout> 
+0

Hmm, ändert 'setBarSpacing()' macht einen spürbaren Unterschied in der Demo-Anwendung, speziell 'SalesStackedBarChart.java'. Poste deinen Code, damit wir sehen können, was falsch ist. – Sam

+0

ja ich habe meinen Code puted bitte überprüfen Sie es danke !!!! –

+1

Sie rufen viele Methoden zweimal auf, einschließlich 'setBarSpacing()'. Mit welcher 'setBarSpacing()' hast du die erste oder die zweite verändert? (Sie sollten die doppelten Aufrufe entfernen, da sie nichts tun.) – Sam

Antwort

3

änderte ich alle Ihre Serie zu XYSeries und fügen Sie sie einfach auf den dataset, ohne zusätzliche Methoden aufrufen.

XYSeries series1 = new XYSeries("A"); 
dataset.addSeries(series1); 

Dann fügen Sie wie Daten in einem regelmäßigen XYChart wie folgt aus:

series1.add(1, value); 
series2.add(2, value); 
+0

Danke Dan für deine Hilfe ... –

+0

kannst du mir helfen? Hier ist meine Frage http://stackoverflow.com/questions/14851820/bar-chart-not-working-in-achartengine – moDev

Verwandte Themen