2013-03-28 72 views
1

在我的代码中Y2是年的列表, a2是包含值的String的arrayList。我需要显示对应年条形图值,不要知道我错了,请帮我,, 这里是我的代码在条形图中使用AchartEngine库添加多个条形图在Android中不工作

if(yearSpinner.equals("All")){ 
     titles = new String[] { "Amount","sasa"}; 
    values = new ArrayList<double[]>(); 
    Double[] doubleLat = new Double[a2.size()]; 
     for(int i = 0; i < a2.size(); i++) 
     { 
      doubleLat[i] = a2.get(i); 
    System.out.println("doubleee=="+doubleLat[i]); 
      values.add(new double[] { doubleLat[i]}); 
     System.out.println("val=="+values); 
     } 


     int[] colors = new int[] { Color.parseColor("#77c4d3")}; 
     renderer = buildBarRenderer(colors); 
     renderer.setOrientation(Orientation.HORIZONTAL); 
     setChartSettings(renderer, "Yearly Details", "Year", "Earnings", 0.5, 
       12.5, 0, yaxis, Color.BLACK, Color.BLACK); 
     renderer.setXLabels(1); 
     renderer.setYLabels(10); 
     for(int i =0;i<y2.size();i++){ 
      renderer.addXTextLabel(i+1, y2.get(i)); 
     } 
     //renderer.addXTextLabel(1, "yearly"); 


     int length = renderer.getSeriesRendererCount(); 
     for (int i = 0; i < length; i++) { 
      SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i); 
      seriesRenderer.setDisplayChartValues(true); 

     } 
    } 

     final GraphicalView grfv = ChartFactory.getBarChartView(getActivity(), buildBarDataset(titles, values), renderer,Type.DEFAULT); 
     return grfv; 
} 
    protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) { 
     XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
     renderer.setAxisTitleTextSize(16); 
     renderer.setChartTitleTextSize(20); 
     renderer.setLabelsTextSize(15); 
     renderer.setLegendTextSize(15); 
     renderer.setBarWidth(30); 
     renderer.setPanEnabled(false, false); 
     renderer.setMarginsColor(Color.parseColor("#EEEDED")); 
     renderer.setXLabelsColor(Color.BLACK); 
     renderer.setYLabelsColor(0,Color.BLACK); 
     renderer.setApplyBackgroundColor(true); 
     renderer.setBackgroundColor(Color.parseColor("#FBFBFC")); 
     int length = a2.size(); 
     for (int i = 0; i < length; i++) { 
      SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
      r.setColor(Color.parseColor("#77c4d3")); 
      //r.setChartvalueAngle(-90); 
      r.setChartValuesSpacing(15); 

      renderer.addSeriesRenderer(r); 
     } 
     return renderer; 
    } 
    protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) { 
     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
     int length = values.size(); 
     for (int i = 0; i < length; i++) { 
      CategorySeries series = new CategorySeries("Amoount"); 
      double[] v = values.get(i); 
      System.out.println("values = ="+values); 
      System.out.println("v = ="+v); 
      int seriesLength = v.length; 
      for (int k = 0; k < seriesLength; k++) { 
       series.add(v[k]); 
       System.out.println("v [k]= ="+v[k]); 
      } 
      dataset.addSeries(series.toXYSeries()); 
     } 
     return dataset; 
    } 

    protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle, 
      String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor, 
       int labelsColor) { 
     renderer.setChartTitle(title); 
     renderer.setYLabelsAlign(Align.RIGHT); 
     renderer.setXTitle(xTitle); 
     renderer.setYTitle(yTitle); 
     renderer.setXAxisMin(xMin); 
     renderer.setXAxisMax(xMax); 
     renderer.setYAxisMin(yMin); 
     renderer.setYAxisMax(yMax);  
     renderer.setMargins(new int[] { 10, 65, 10, 15 }); 
     renderer.setAxesColor(axesColor); 
     renderer.setLabelsColor(labelsColor); 
    } 

感谢所有帮助

+0

图表现在如何?什么不起作用? – 2013-03-28 11:17:27

+0

我的X轴像2013,2014年那样,图形中的2个条形图仅在2013年合并显示,其非常薄,我希望条形宽度更大,条形之间应有空间,空间应该相应到x轴值空间 – user2199280 2013-03-28 11:24:48

+0

我已经发布了更新后的代码..我已经使用了categoryseries而不是xyseries .. – user2199280 2013-03-28 11:34:44

回答

0

问题是造成您正在为每个数据项创建一个CategorySeries实例。 A CategorySeries可以在同一类别下包含多个值。当系列中有单个项目时,该栏会显示为较薄。

+0

我已经把类别系列之前for循环,现在我的第一个值来了两次,小空间和第二个值 – user2199280 2013-03-28 11:43:18