2013-03-15 12 views
6

私はAndroidにはまったく新しく、AChartEngineを使って棒グラフを作成しようとしています.3つの棒と各棒は異なる色にする必要があります。複数のシリーズを使用しようとしましたが、x軸の値を棒と揃えることができません。複数のシリーズを使用した異なる色のバー

protected void onResume() { 
    super.onResume(); 
    layout = (LinearLayout) findViewById(R.id.chart); 
    if (mChartView == null) 
    { 
      PeakSeries = new XYSeries("Income"); 
      ForecastPeakSeries = new XYSeries("Expense"); 
      ForecastSeries = new XYSeries("Expense"); 

      int[] x = { 1,2,3}; 
      int income = 2000; 
      int expense = 2700; 
      System.out.println("Here"); 
      Series1.add(x[0],income); 
      Series2.add(x[1],expense); 
      Series3.add(x[2],expense); 

      // Creating a dataset to hold each series 
      XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 

      dataset.addSeries(Series1); 
      dataset.addSeries(Series2); 
      dataset.addSeries(Series3); 


      XYSeriesRenderer Renderer1 = new XYSeriesRenderer(); 
      Renderer1 .setColor(Color.RED); 
      Renderer1 .setChartValuesTextSize(18); 
      Renderer1 .setFillPoints(true); 
      Renderer1 .setDisplayChartValues(true); 

      // Creating XYSeriesRenderer to customize expenseSeries 
      XYSeriesRenderer Renderer2 = new XYSeriesRenderer(); 
      Renderer2 .setColor(Color.YELLOW); 
      Renderer2 .setChartValuesTextSize(18); 
      Renderer2 .setDisplayChartValues(true); 

      XYSeriesRenderer Renderer3 = new XYSeriesRenderer(); 
      Renderer3 .setColor(Color.CYAN); 
      Renderer3 .setChartValuesTextSize(18); 
      Renderer3 .setFillPoints(true); 
      Renderer3 .setChartValuesTextAlign(Align.CENTER); 
      Renderer3 .setDisplayChartValues(true); 

      // Creating a XYMultipleSeriesRenderer to customize the whole chart 
       double[] range = {0,5,0,5}; 
      multiRenderer.setMargins(new int[] {50, 50, 50, 50}); 
      multiRenderer.setAxisTitleTextSize(16); 
      multiRenderer.setChartTitleTextSize(30); 
      multiRenderer.setLabelsTextSize(15); 
      multiRenderer.setLegendTextSize(20); 
      multiRenderer.setLegendHeight(40); 
      multiRenderer.setBarSpacing(-0.7); 
      multiRenderer.setAxesColor(Color.WHITE); 
      multiRenderer.setInitialRange(range, 1); 
      multiRenderer.setXAxisMin(0.4); 
      multiRenderer.setXAxisMax(4); 
      multiRenderer.setYAxisMax(5000); 
      multiRenderer.setYAxisMin(0); 
      multiRenderer.setXLabelsAlign(Align.RIGHT); 
      multiRenderer.setYLabelsAlign(Align.RIGHT); 
      //multiRenderer.s(Align.LEFT); 
      multiRenderer.setPanEnabled(false, false); 
      multiRenderer.setZoomEnabled(true, true); 

      multiRenderer.setChartTitle("7 Day Outlook - Maxiumum Demand"); 
      multiRenderer.setXTitle("Date"); 
      multiRenderer.setYTitle("MW"); 

      multiRenderer.addSeriesRenderer(Renderer1); 
      multiRenderer.addSeriesRenderer(Renderer2); 
      multiRenderer.addSeriesRenderer(Renderer3); 

      final GraphicalView mChartView = ChartFactory.getBarChartView(TestSevenDay1.this, dataset, multiRenderer,Type.DEFAULT); 
      layout.addView(mChartView); 

    } 
    else 
    { 
     mChartView.repaint(); 
    } 
} 

何か助けていただければ幸いです。 enter image description here

答えて

9

Type.DefaultからType.StackedgetBarChartViewに設定して処理しました。

ChartFactory.getBarChartView(TestSevenDay1.this, dataset, multiRenderer, Type.STACKED); 
0

あなたはシリーズごとに1つだけのアイテムを持つ棒グラフを持っている場合、それはrenderer.setBarSpacing()を使用し、代わりにrenderer.setBarWidth()を使用しないことをお勧めします。

+0

renderer.setBarWidth()関数はまだバージョン1.1.0に存在しますか?私はそれを使用することができません。 –

+0

XYMultipleSeriesRendererにあります。 –

+0

ご返信ありがとうございます。私は次のようにしてみました: XYMultipleSeriesRenderer = new XYMultipleSeriesRenderer(); renderer.setBarSpacing(0); renderer.setBarWidth(2); renderer.setOrientation(Orientation.VERTICAL); それは、 "setBarWidth(int)メソッドはXYMultipleSeriesRenderer型のために未定義です。 –

関連する問題