2013-03-15 2 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.Stacked까지 getBarChartView으로 설정하여 처리했습니다.

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

, renderer.setBarSpacing()을 사용하는 대신 renderer.setBarWidth()를 사용하지 않는 것이 좋습니다.

+0

renderer.setBarWidth() 함수는 여전히 버전 1.1.0에 있습니까? 나는 그것을 사용할 수 없다. –

+0

XYMultipleSeriesRenderer에 있습니다. –

+0

답장 Dan을 보내 주셔서 감사합니다. 다음과 같이 시도 : XYMultipleSeriesRenderer 렌더러 = new XYMultipleSeriesRenderer(); renderer.setBarSpacing (0); renderer.setBarWidth (2); renderer.setOrientation (Orientation.VERTICAL); 그에게주는 말은 "메서드 setBarWidth (int)는 XYMultipleSeriesRenderer 유형에 대해 정의되지 않았습니다. 무엇이 문제일까요? –

관련 문제