2015-02-25 4 views
0

Я хочу отобразить сводную диаграмму в моем приложении Android с функциональностью всплывающей подсказки. Я использовал MarkerView для его отображения, но без успеха. Вот пример кода.Инструмент подсказки для штабелированной диаграммы диаграммы с использованием MarkerView & Issues в Legends

Также я сталкиваюсь с проблемами в легендах ..! Поскольку текст не поддерживается библиотекой, легенды не отображаются. И значения по оси Y отображаются в Integer. который я хочу отображать в поплавках. Могу ли я дать «%» в значениях оси Y? Нечто подобное,

https://drive.google.com/a/findabilitysciences.com/file/d/0B-kRufrwei7wSHFMQjVDMkdTNVk/view?usp=sharing

 chart1 = (BarChart) findViewById(R.id.chart1); 
        chart1.setDrawYValues(true); 
        //chart1.setDrawValueAboveBar(true); 
        chart1.setDescription(""); 
        chart1.set3DEnabled(false); 
        chart1.setUnit("%"); 
        chart1.setDrawGridBackground(false); 
        chart1.setDrawHorizontalGrid(true); 
        chart1.setValueTextSize(8f); 
        chart1.setDrawBorder(false); 
        chart1.setYRange(0.0f,100.0f,true); 
        chart1.setDrawLegend(true); 
        chart1.setPinchZoom(true); 
        chart1.setTouchEnabled(true); 
        //Code for Tooltip at barchart. 
        /*MyMarkerView mv = new MyMarkerView(getApplicationContext(), R.layout.custom_marker_view); 
        mv.setOffsets(-mv.getMeasuredWidth()/2, -mv.getMeasuredHeight()); 
        chart1.setMarkerView(mv);*/ 






        XLabels xl = chart1.getXLabels(); 
        xl.setPosition(XLabels.XLabelPosition.BOTTOM); 
        xl.setSpaceBetweenLabels(10); 
        xl.setCenterXLabelText(true); 

        YLabels yl = chart1.getYLabels(); 
        //yl.setLabelCount(10); 
        yl.setPosition(YLabels.YLabelPosition.LEFT); 


        setData(); 

        Legend l = chart1.getLegend(); 
        l.setPosition(Legend.LegendPosition.BELOW_CHART_RIGHT); 
        l.setFormSize(8f); 
        l.setYEntrySpace(4f); 

        chart1.animateY(3000); 


       } 


      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       Toast.makeText(getApplicationContext(), "Error Occurred [Server's JSON response might be invalid]!" + e.getMessage(), Toast.LENGTH_LONG).show(); 
       e.printStackTrace(); 

      } 

     } 

     private void setData() { 
      ArrayList<String> xVals = new <String>ArrayList<String>(); 
      xVals.add("Donors"); 
      xVals.add("Amount"); 

      ArrayList<BarEntry> yVals1 = new <BarEntry>ArrayList<BarEntry>(); 

      yVals1.add(new BarEntry(new float[]{donoravg.get(0),donoravg.get(1),donoravg.get(2),donoravg.get(3),donoravg.get(4),donoravg.get(5),donoravg.get(6),donoravg.get(7),donoravg.get(8),donoravg.get(9),donoravg.get(10)}, 0)); 
      yVals1.add(new BarEntry(new float[]{amountavg.get(0),amountavg.get(1),amountavg.get(2),amountavg.get(3),amountavg.get(4),amountavg.get(5),amountavg.get(6),amountavg.get(7),amountavg.get(8),amountavg.get(9)}, 1)); 

      BarDataSet set1 = new BarDataSet(yVals1, ""); 
      set1.setStackLabels(new String[]{"All other defector count", "Last Year Defector Count", "At Risk Donor Count"}); 
      set1.setBarSpacePercent(40f); 
      set1.setColors(new int[]{R.color.pink_400, R.color.purple_300, R.color.deep_purple_300, R.color.indigo_300, R.color.cyan_300, R.color.teal_300, R.color.amber_300, R.color.deep_orange_300, R.color.brown_300, R.color.blue_grey_300}, getApplicationContext()); 

      ArrayList<BarDataSet> dataSets = new <BarDataSet>ArrayList<BarDataSet>(); 
      dataSets.add(set1); 
      BarData data = new BarData(xVals, dataSets); 
      chart1.setData(data); 

     } 

ответ

0

Новая библиотека mpAndroidChart v2.0.7 решены все вопросы. с использованием .setValueFormatter(); мы можем форматировать значение оси Y, а также значения диаграммы.

Для проблемы с легендой, Вместо того, чтобы показывать легенды, я добавил Touch Listener, который может работать со значениями стека. Сенсорный слушатель может отображать детали значения.