2012-10-16 48 views
0

我正在繪製條形圖和餅圖來表示使用achartengine庫的各種應用程序名稱。Android:Achartengine中的條形圖和餅圖

當我實例CategorySeries反對它需要一系列的標題爲:

CategorySeries series = new CategorySeries("title") //IN BAR CHART 
CategorySeries series = new CategorySeries("title") //IN PIE CHART 

不同於餅圖的應用程序名稱沒有獲得在條形圖 底部充氣說,在餅圖其作爲的情況下,如下:

(1)應用程序1

(2)應用程序2

(3)應用程序...至

(10)應用程序10。

但萬一巴炭而是其示出了作爲其未示出:

(1)申請的NUMBER ---- >>>(這是系列標題我已經 通過在作爲參數而 實例CategorySeries的對象)


請建議我來顯示條形圖藏漢的鑰匙,我已附加一個代碼段BELOW


if (c.getCount() > 0) { 
       if (! mPieChart) { 
        series = new CategorySeries("NUMBER OF APPLICATIONS"); 
        getActivity().startManagingCursor(c); 
        c.moveToPosition(-1); 
        //series.clear(); 
        while (c.moveToNext()) { 

         recievedBytes = c.getLong(ApplicationDataCounterDao.CONTENT_RECEIVED_COLUMN); 
         sentBytes = c.getLong(ApplicationDataCounterDao.CONTENT_SENT_COLUMN); 
         totalBytes = (recievedBytes + sentBytes)/(1024 * 1024); 
         if (totalBytes > 0) { 
          applicationInfo 
            .add(new ApplicationDataUsage(
              c.getString(ApplicationDataCounterDao.CONTENT_APPLICATION_NAME_COLUMN), 
              Double.toString(totalBytes))); 
         } 
        } 

        int size = applicationInfo.size(); 
        for (int i = 0; i < size; ++i) { 
         Log.v("BAR CHART", "data added are " + applicationInfo.get(i).mApplicationName); 
         double value = Double.parseDouble(applicationInfo 
           .get(i).mDataUsage); 
         series.add("BAR", value); 

        } 

        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 

        dataset.addSeries(series.toXYSeries()); 
        XYSeriesRenderer renderer = new XYSeriesRenderer(); 
        renderer.setDisplayChartValues(true); 
        renderer.setChartValuesSpacing((float) 0.5); 
        renderer.setColor(Color.CYAN); 

        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 
        mRenderer.setBarSpacing(0.5); 
        mRenderer.getBarSpacing(); 
        mRenderer.setXTitle("Application Number"); 
        mRenderer.setYTitle("Data Usage"); 
        mRenderer.setAxesColor(Color.GREEN); 
        mRenderer.setZoomButtonsVisible(true); 
        mRenderer.setInScroll(true); 
        mRenderer.setLabelsColor(Color.RED); 
        mRenderer.addSeriesRenderer(renderer); 

        if (mChartViewBar == null) { 
         Log.v(LOG_TAG, "chart view is null"); 
         mChartViewBar = ChartFactory 
           .getBarChartView(getActivity(), dataset, 
             mRenderer, Type.DEFAULT); 
         mRenderer.setClickEnabled(true); 
         mRenderer.setSelectableBuffer(10); 
         mChartViewBar 
           .setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
             SeriesSelection seriesSelection = mChartViewBar 
               .getCurrentSeriesAndPoint(); 
             CategorySeries series22 =new CategorySeries("333"); 
             mChartViewBar.repaint(); 
             if (seriesSelection == null) { 
              Toast.makeText(
                getActivity(), 
                "No chart element was clicked", 
                Toast.LENGTH_SHORT).show(); 
             } else { 
              Toast.makeText(
                getActivity(), 
                "APPLICATION NAME : " 
                  + series22.getTitle() 
                  + 1 
                  + " was clicked" 
                  + " DATA USAGE : " 
                  + seriesSelection 
                    .getXValue(), 
                Toast.LENGTH_SHORT).show(); 
             } 
            } 
           }); 
         mChartLayout.removeAllViews(); 
         mChartLayout.addView(mChartViewBar, new LayoutParams(
           LayoutParams.FILL_PARENT, 
           LayoutParams.FILL_PARENT)); 
        } else { 
         mChartLayout.removeAllViews(); 
         mChartLayout.addView(mChartViewBar, new LayoutParams(
           LayoutParams.FILL_PARENT, 
           LayoutParams.FILL_PARENT)); 
         mChartViewBar.repaint(); 
        } 
       } else if (mPieChart) { 
        CategorySeries seriesPie = new CategorySeries("Pie Graph"); 
        getActivity().startManagingCursor(c); 
        c.moveToPosition(-1); 
        while (c.moveToNext()) { 
         long recievedBytes = c .getLong(ApplicationDataCounterDao.CONTENT_RECEIVED_COLUMN); 
         Long sentBytes = c.getLong(ApplicationDataCounterDao.CONTENT_SENT_COLUMN); 
         totalBytes = (recievedBytes + sentBytes) 
           /(1024 * 1024); 
         if (totalBytes > 0) { 
           applicationInfo 
             .add(new ApplicationDataUsage(
               c.getString(ApplicationDataCounterDao.CONTENT_APPLICATION_NAME_COLUMN), 
               Double.toString(totalBytes))); 
         } 
        } 
        int size = applicationInfo.size(); 
        for (ApplicationDataUsage data_value : applicationInfo) { 
         Log.v("PIE CHART", "data added are " + data_value.mApplicationName); 
         double dataUsage = Double 
           .parseDouble(data_value.mDataUsage); 
         seriesPie.add(data_value.mApplicationName, dataUsage); 
        } 

        for (int i = 0; i < size; ++i) { 
         prepareColors(); 
        } 
        DefaultRenderer renderer = new DefaultRenderer(); 
        for (int fillColor : colorList) { 
         // Log.d("1111111111", 
         // "FILL COLOUR TILL SIZE OF COLORLIST"); 
         SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
         r.setColor(fillColor); 
         renderer.addSeriesRenderer(r); 
        } 
        renderer.setInScroll(true); 
        renderer.setChartTitle("APPLICATION WISE PIE CHART"); 
        renderer.setChartTitleTextSize(20); 
        renderer.setApplyBackgroundColor(true); 
        renderer.setBackgroundColor(Color.BLACK); 
        renderer.setZoomButtonsVisible(true); 

        if (mChartViewPie == null) { 
         Log.v(LOG_TAG, "chat view is null"); 
         // series.clear(); 
         mChartViewPie = ChartFactory.getPieChartView(
           getActivity(), seriesPie, renderer); 
         renderer.setClickEnabled(true); 
         renderer.setSelectableBuffer(10); 
         mChartViewPie 
           .setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
             SeriesSelection seriesSelection = mChartViewPie 
               .getCurrentSeriesAndPoint(); 
             mChartViewPie.repaint(); 
             if (seriesSelection == null) { 
              ToastHelper.showToastMessage(
                "No item was Clicked", 
                getActivity()); 
             } else { 
              ToastHelper.showToastMessage(
                "Application number " 
                  + seriesSelection 
                    .getPointIndex() 
                  + " was clicked and it's Data Usage is " 
                  + seriesSelection 
                    .getValue(), 
                getActivity()); 
             } 
            } 
           }); 
         /*if (mChartViewBar != null) { 
          mChartLayout.removeView(mChartViewBar); 
         } 
         if (mChartViewPie != null) { 
          mChartLayout.removeView(mChartViewPie); 
         }*/ 
         mChartLayout.addView(mChartViewPie, new LayoutParams(
           LayoutParams.FILL_PARENT, 
           LayoutParams.FILL_PARENT)); 
        } else { 
        /* if (mChartViewBar != null) { 
          mChartLayout.removeView(mChartViewBar); 
         } 
         if (mChartViewPie != null) { 
          mChartLayout.removeView(mChartViewPie); 
         }*/ 
         mChartLayout.removeAllViews(); 
         mChartLayout.addView(mChartViewPie, new LayoutParams(
           LayoutParams.FILL_PARENT, 
           LayoutParams.FILL_PARENT)); 
         mChartViewPie.repaint(); 
        } 
       } 

回答

1

你是混淆與X軸標籤的傳奇。 BarChart是一個XYChart,這意味着它獲取圖例和x軸標籤。 PieChart不是XYChart,所以它沒有得到X軸和Y軸。

正如您所提到的,該系列標題轉到了圖例。

在X軸中,系列值索引默認爲「但是,您可以隱藏默認的標籤,並添加自己的自定義的:

renderer.setXLabels(0); 
renderer.addXTextLabel(1, "label); 
renderer.addXTextLabel(2, "label); 
... 
+0

你可以給我建議:以土司味精作爲應用程序名稱,參照上面的代碼中使用哪一個類.... ..在上面的代碼m中使用SeriesSelection對象來獲取值的索引,如object.getPointIndex()和object.getValue() – Varun