1

我正在使用 Achartengine 库创建堆叠条形图。值未正确显示。我想在条形顶部显示像 {20,20,20} 这样的图表值并对齐到中心。

这是我的代码

    dataset.addSeries(JumlahSeries);
    dataset.addSeries(JumlahSeries1);
    dataset.addSeries(FirstSeries);
    final XYSeriesRenderer FirstRenderer = new XYSeriesRenderer();
    Log.d("Error Here","29");
    FirstRenderer.setColor(Color.BLUE);
    FirstRenderer.setFillPoints(false);
    FirstRenderer.setLineWidth(5);  
    FirstRenderer.setChartValuesTextSize(15);
    FirstRenderer.setDisplayChartValues(false);

            // Creating XYSeriesRenderer to customize expenseSeries
    Log.d("Error Here","30");
    final XYSeriesRenderer SecondRenderer = new XYSeriesRenderer();
    SecondRenderer.setColor(Color.RED);
    SecondRenderer.setFillPoints(false);
    SecondRenderer.setLineWidth(5);
    SecondRenderer.setDisplayChartValues(false);
    SecondRenderer.setChartValuesTextSize(15);
    Log.d("Error Here","31");
    final XYSeriesRenderer ThirdRenderer = new XYSeriesRenderer();
    ThirdRenderer.setFillPoints(false);
    ThirdRenderer.setColor(Color.GREEN);
    ThirdRenderer.setLineWidth(5);
    ThirdRenderer.setDisplayChartValues(false);
    ThirdRenderer.setChartValuesTextSize(15);
    // Creating a XYMultipleSeriesRenderer to customize the whole chart
    final XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
    //zoomIn = new Zoom((GraphicalView) mChart, true, multiRenderer.getZoomRate());
    //multiRenderer.setChartTitle("\n"+"\n"+ title);
    multiRenderer.setChartTitleTextSize(20);
    //multiRenderer.setXTitle("\n"+"\n"+"\n"+"\n"+"\n"+"\n"+"\n"+"\n"+"Laporan Pada :"+ DateToDisplay);
    multiRenderer.setShowGridX(false);
    multiRenderer.setShowLegend(true);
    multiRenderer.setShowLabels(true);     
    multiRenderer.setAxisTitleTextSize(15);
    multiRenderer.setMargins(new int[] { 70,70,25,25});
    multiRenderer.setYTitle("Bilangan\n\n"+"\n"+"\n"+"\n");
    multiRenderer.setZoomButtonsVisible(true);
    multiRenderer.setBarSpacing(spacing);
    multiRenderer.setYAxisMax(max);
    multiRenderer.setYLabelsColor(0, Color.BLACK);
    multiRenderer.setXLabelsColor(Color.BLACK);
    multiRenderer.setXLabels(0);     
    multiRenderer.setPanEnabled(true, false);
    double Xmax = 2;
    if(StacktotalX.getTotal().size()<5){
        Log.d("Error Here","32");
        Xmax=StacktotalX.getTotal().size()*1.3;
    }
    multiRenderer.setXAxisMax(Xmax) ;
    multiRenderer.setXAxisMin(-1) ;
    multiRenderer.setLabelsTextSize(13);
    multiRenderer.setZoomEnabled(true,false);
    multiRenderer.setClickEnabled(true);
    for (int i = 0; i < StacktotalX.getTotal().size(); i++) 
    { 
        Log.d("Error Here","33");
        multiRenderer.addXTextLabel(i,StacktotalX.getTotal().get(i).toString());
        Log.d("texl",StacktotalX.getTotal().get(i).toString());
    }
    multiRenderer.addSeriesRenderer(ThirdRenderer);
    multiRenderer.addSeriesRenderer(SecondRenderer);
    multiRenderer.addSeriesRenderer(FirstRenderer);
    Log.d("Error Here","34");
    mChart = ChartFactory.getBarChartView(getBaseContext(), dataset, multiRenderer, Pattern);
    multiRenderer.setApplyBackgroundColor(true);
    multiRenderer.setBackgroundColor(Color.TRANSPARENT);
    multiRenderer.setMarginsColor(Color.TRANSPARENT);
    multiRenderer.setLabelsColor(Color.BLACK);
    mChart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
            if (seriesSelection != null) {
                int seriesIndex = seriesSelection.getSeriesIndex();
                String selectedSeries="Bilangan";
                Log.d("seriesIndex",String.valueOf(seriesIndex));
                // String yobject = [(int)seriesSelection.getXValue()-1];
                // Getting the clicked Month
                //String month = x[(int)seriesSelection.getXValue()-1];
                // Getting the y value
                int amount = (int) seriesSelection.getValue();
                Log.d("amout",String.valueOf(amount));
                Toast.makeText(
                        getBaseContext(),
                        selectedSeries + " in " + " : " + amount ,
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
    // Start Activity*/
    chartContainer.addView(mChart);
    new Thread(new Runnable() { 
        public void run() { 
            long time = 0;
            time = 9000/max;
            Log.d("Error Here","35");
            if(time>1.5){
                time = (long) 1.5;
            }if(time<0.5){
                time = (long) 0.5;
            }
            int animation = 1;
            Log.d("Error Here","36");
            while(true){
                boolean stop = true;
                for(int k=0; k< StacktotalX.getTotal().size();k++){ 
                    //                              for(int k=0;k<jum1.size();k++)
                    //                              {
                    //                                  JumlahSeries.add(k,jum1.get(tims));
                    //                                  tims++;
                    //                              }
                    if(animation<= jum3.get(k)){
                        Log.d("Error Here","37");
                        FirstSeries.add(k,animation);
                        stop=false;
                    }
                    if(animation<= jum.get(k)){
                        Log.d("Error Here","38");
                        JumlahSeries1.add(k,animation);
                        stop=false;
                    }
                    if(animation<= jum1.get(k)){
                        Log.d("Error Here","39");
                        JumlahSeries.add(k,animation);
                        stop=false;
                    }
                }
                try { 
                    Log.d("Error Here","40");
                    Thread.sleep(time); 
                    Log.d("Error Here","4");
                    mChart.repaint();
                }catch (InterruptedException e) { 
                    e.printStackTrace(); 
                } 
                animation++; 
                if(stop){
                    FirstSeries.clear();
                    JumlahSeries1.clear();
                    JumlahSeries.clear();
                    for(int y=0;y<StacktotalX.getTotal().size();y++)
                    {
                        FirstSeries.add(y,jum3.get(y));
                        JumlahSeries1.add(y, jum.get(y));
                        JumlahSeries.add(y, jum1.get(y));
                    }
                    FirstRenderer.setChartValuesSpacing(10);
                    FirstRenderer.setChartValuesTextAlign(Align.LEFT);
                    FirstRenderer.setDisplayChartValues(true);
                    FirstRenderer.getChartValuesTextAlign();
                    SecondRenderer.setChartValuesSpacing(10);
                    SecondRenderer.setChartValuesTextAlign(Align.CENTER);
                    SecondRenderer.setDisplayChartValues(true);
                    SecondRenderer.getChartValuesTextAlign();
                    ThirdRenderer.setChartValuesSpacing(10);
                    ThirdRenderer.setChartValuesTextAlign(Align.RIGHT);
                    ThirdRenderer.setDisplayChartValues(true);
                    ThirdRenderer.getChartValuesTextAlign();
                    mChart.repaint();
                    break;
                }
            }         
        }
    }).start();* 

这是我现在显示的图像:-图片

4

0 回答 0