2012-12-07 7 views
10

हाय मैं एक बारग्राफ में 4 मान प्रदर्शित कर रहा हूं जहां प्रत्येक बार अलग रंग होता है। जब मैं प्रत्येक बार ग्राफ को प्रत्येक बार ओवरलैप कर रहा हूं। मैं अलग-अलग मूल्यों को डालकर setBarSpacing() के साथ किए गए सलाखों के बीच जगह बनाना चाहता हूं, फिर भी यह काम नहीं कर रहा है। क्या कोई अन्य विचार है।Achartengine का उपयोग करके बारग्राफ में बार के बीच स्थान कैसे बनाना है यदि प्रत्येक बार अलग-अलग मानों का अलग-अलग रंग है

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; 

    } 




} 

यहां मेरा कोड है।

यहां अतिरिक्त तरीकों बुला के बिना मेरे activity_main.xml फ़ाइल

<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

हम्म, बदल रहा है 'setBarSpacing()' डेमो अनुप्रयोग में एक उल्लेखनीय अंतर है, विशेष रूप 'SalesStackedBarChart.java' बनाता है। अपना कोड पोस्ट करें ताकि हम देख सकें कि क्या गलत है। – Sam

+0

हाँ मैंने अपना कोड डाला है कृपया इसे जांचें धन्यवाद !!!! –

+1

आप 'setBarSpacing() 'सहित कई विधियों को दो बार बुला रहे हैं। आप 'setBarSpacing()' क्या आप पहले या दूसरे को बदल रहे थे? (आपको डुप्लिकेट कॉल को हटा देना चाहिए क्योंकि वे कुछ भी नहीं करते हैं।) – Sam

उत्तर

3

मैं XYSeries के लिए अपने सभी श्रृंखला बदल गया है और उन्हें dataset बस जोड़ने है।

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

फिर, जैसे डेटा जोड़ने के इस तरह एक नियमित रूप से XYChart में:

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

मदद करने के लिए धन्यवाद दान ... –

+0

क्या आप मेरी मदद कर सकते हैं? यहां मेरा प्रश्न है http://stackoverflow.com/questions/14851820/bar-chart-not-working-in-achartengine – moDev

संबंधित मुद्दे