2013-03-15 31 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

我通過將TypeType.Default設置爲Type.Stacked來處理getBarChartView

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

當你有條形圖,每個系列只有一個項目,這是一個好主意,不使用renderer.setBarSpacing()和使用renderer.setBarWidth()代替。

+0

Renderer.setBarWidth()函數仍然存在於版本1.1.0中嗎?我無法使用它。 – 2013-04-09 17:43:45

+0

它在XYMultipleSeriesRenderer中。 – 2013-04-09 18:08:30

+0

謝謝你的回覆丹。我嘗試如下: XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); renderer.setBarSpacing(0); renderer.setBarWidth(2); renderer.setOrientation(Orientation.VERTICAL); 它給我的錯誤說:「方法setBarWidth(int)是未定義的類型XYMultipleSeriesRenderer。可能是什麼問題? – 2013-04-09 19:16:22

相關問題