8

AChartEngine を使用して、数日 (可能であれば 2 か月) の平均を表示しています。ある個人とグループの比較を提供したいと思います。この時点で、x 軸全体に日付を表​​示する方法に取り組んでいます (つまり、2011 年 12 月 15 日、2011 年 12 月 11 日、または 12/15、12 月 15 日など)。

AchartEngine でこれを行う方法がわかりません。ドキュメントは、写真なしで理解するのが少し難しいです (申し訳ありません)。私はこのようなものが欲しいです:グラフに AChartEngine ライブラリを使用すると、異なる x 軸値の値を取得できません

これが私のコードです:

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;
       }

ここに画像の説明を入力

4

1 に答える 1

8

X 軸ラベルのカスタム テキストを設定できます。

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

棒グラフに複数のカラー バーを表示するには、複数の系列を追加する必要があります。

ここは、AChartEngine の使用方法を示すための優れたコードが多数含まれているデモ アプリケーションをダウンロードして実行する方法について説明します。

于 2012-01-05T07:15:06.607 に答える