2011-12-15 30 views
9

Tôi đang sử dụng AChartEngine để hiển thị số trung bình trong vài ngày (2 tháng nếu có thể). Tôi muốn cung cấp một so sánh giữa một cá nhân và một nhóm. Tại thời điểm này, tôi đang làm việc về cách cung cấp ngày trên trục x (tức là, 15/12/2011 hoặc 11 tháng 12 năm 2011 hoặc thậm chí 12/15, ngày 15 tháng 12).Achartengine: Chèn ngày dưới dạng giá trị X vào

Tôi không chắc chắn cách thực hiện việc này trong AchartEngine; tài liệu này hơi khó để tôi theo dõi mà không có hình ảnh (xin lỗi). Tôi muốn một cái gì đó như thế này: Using AChartEngine library for graphs, not able to get value for diffrent x-axis value

Dưới đây là mã của tôi:

private void setupHistoryChart() {  
     XYMultipleSeriesRenderer renderer = getBarDemoRenderer(); 
     setChartSettings(renderer); 
     Intent intent = ChartFactory.getBarChartIntent(this, getBarDemoDataset(), renderer, Type.DEFAULT); 
     startActivity(intent); 
    } 

    public XYMultipleSeriesRenderer getBarDemoRenderer() { 
     XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
     renderer.setAxisTitleTextSize(15); 
     renderer.setChartTitleTextSize(18); 
     renderer.setLabelsTextSize(12); 
     renderer.setLegendTextSize(15); 
     renderer.setMargins(new int[] {20, 30, 15, 0}); 
     SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
     r.setColor(Color.BLUE); 
     renderer.addSeriesRenderer(r); 

     return renderer; 
     } 

    private void setChartSettings(XYMultipleSeriesRenderer renderer) { 
     renderer.setChartTitle("History"); 
     renderer.setChartTitleTextSize((float) 14.0); 
     renderer.setXTitle("Day"); 
     renderer.setXLabelsAlign(Align.LEFT); 
     renderer.setYLabelsAlign(Align.LEFT); 
     renderer.setBarSpacing(0.5); 
     renderer.setZoomEnabled(true); 
     renderer.setZoomRate(0.2f); 
     renderer.setYTitle("Unit)"); 
     renderer.setXAxisMin(1.0); 

     if(AppStatus.mDayMap.size() == 0){ 
      renderer.setXAxisMax(3.0); 
      renderer.setYAxisMax(10.0); 
     }else{ 
      renderer.setXAxisMax(AppStatus.mDayMap.size()); 
      // Get the max Integer out of myMap 
      Map.Entry<String, Integer> maxEntry = null; 

      for (Map.Entry<String, Integer> entry : AppStatus.mDayMap.entrySet()) 
      { 
       if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) 
       { 
        maxEntry = entry; 
       } 
      } 
      renderer.setYAxisMax(maxEntry.getValue()/1000 + maxEntry.getValue()/1000); 
     } 
     renderer.setYAxisMin(0); 
     } 

    private XYMultipleSeriesDataset getBarDemoDataset() { 
     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
     HashMap<String, Integer> myMap = AppStatus.mDayMap; 
     CategorySeries series = new CategorySeries ("Your History " + 1); 
     try{ 

      if(AppStatus.mDayMap.size() == 0){ 
       series.add(3.0); 
       series.add(10.0); 
       dataset.addSeries(series.toXYSeries()); 
      }else{ 
       Log.v(LOG_TAG, "Size of Map = " + myMap.size()); 
       float sum = (float) 0.0; 
       if(myMap.size() > 0){ 
        Iterator it = myMap.entrySet().iterator(); 
        float j= (float)0.0; 
        for (int i = 0; i < 1 /*2*/; i++) { 
         //CategorySeries series = new CategorySeries("Your History " + (i + 1)); 
         while(it.hasNext()){ 
          Map.Entry pairs = (Map.Entry)it.next(); 
          sum = sum + (float) (1.0 + j); 
          series.add((((Integer) pairs.getValue()).doubleValue())/1000); 
         } 
         dataset.addSeries(series.toXYSeries()); 
        } 
       } 
      } 

     }catch(IllegalArgumentException e){ 
      Log.e(LOG_TAG, "IllegalArgumentException " + e.toString()); 
      series.add(3.0); 
      series.add(10.0); 
      dataset.addSeries(series.toXYSeries()); 
     } 

     return dataset; 
     } 

enter image description here

Trả lời

8

Bạn có thể đặt văn bản tùy chỉnh cho các nhãn trục X:

renderer.addXTextLabel(x, text); 
renderer.setXLabels(0); 

Để có nhiều thanh màu trong biểu đồ thanh, bạn sẽ phải thêm nhiều chuỗi.

Có một số hướng dẫn here về cách tải xuống và chạy ứng dụng demo bao gồm rất nhiều mã tốt để chứng minh việc sử dụng AChartEngine.

Các vấn đề liên quan