2017-11-09 12 views
0

enter image description here 아래 X- 축 레이블을 표시하지 않습니다. 또한 xaxis 레이블을 4로 제한하면 여전히 5 개의 값을 표시합니다. 솔루션을 너무 많이 보았지만 나를 위해 작동하지 않습니다.MpChart이 내가 얻을 출력 바로 바

mChart.setMaxVisibleValueCount(60); 
      mChart.setDrawGridBackground(false); 
      mChart.setDragEnabled(true); 
      mChart.getDescription().setEnabled(false); 
      mChart.setFitBars(true); 
      mChart.setPinchZoom(false); 
      mChart.setDoubleTapToZoomEnabled(false); 

      XAxis xAxis = mChart.getXAxis(); 
      xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
      xAxis.setDrawGridLines(false); 
      xAxis.setGranularity(0.5f); 
      xAxis.setGranularityEnabled(true); 
      xAxis.setValueFormatter(new IAxisValueFormatter() { 
       @Override 
       public String getFormattedValue(float value, AxisBase axis) { 
        Float dfloat = value; 
        long dateInMillis = dfloat.longValue(); 
        return ChartUtils.getMonthYearFromMillis(dateInMillis); 
       } 
      }); 

      YAxis leftAxis = mChart.getAxisLeft(); 
      leftAxis.setValueFormatter(new ChartUtils.YAxisValueRsFormatter(context)); 
      leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); 
      leftAxis.setSpaceTop(15f); 
      leftAxis.setDrawGridLines(false); 

      YAxis rightAxis = mChart.getAxisRight(); 
      rightAxis.setEnabled(false); 

      Legend l = mChart.getLegend(); 
      l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); 
      l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); 
      l.setOrientation(Legend.LegendOrientation.HORIZONTAL); 
      l.setDrawInside(false); 
      l.setForm(Legend.LegendForm.SQUARE); 
      l.setFormSize(9f); 
      l.setTextSize(11f); 
      l.setXEntrySpace(4f); 

      final Map<Long, Double> monthMap = new HashMap<>(); 
      for (Map.Entry<Long, Double> cMap : chartMap.entrySet()) { 
       long month = ChartUtils.getFirstDateMonthYear(cMap.getKey()); 
       Double amount = monthMap.get(month); 
       if (null == amount) { 
        amount = cMap.getValue(); 
       } else { 
        amount += cMap.getValue(); 
       } 
       monthMap.put(month, amount); 
      } 
      final Map<Long, Double> treeMap = new TreeMap<>(monthMap); 

      final ArrayList<BarEntry> yVals1 = new ArrayList<>(); 
      for (Map.Entry<Long, Double> cMap : treeMap.entrySet()) { 
       yVals1.add(new BarEntry(cMap.getKey(), cMap.getValue().floatValue())); 
      } 

      final BarDataSet set1; 

      if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0) { 
       set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0); 
       set1.setValues(yVals1); 
       mChart.getData().notifyDataChanged(); 
       mChart.notifyDataSetChanged(); 
      } else { 
       set1 = new BarDataSet(yVals1, "Amounts"); 
       set1.setValueTextColor(context.getResources().getColor(R.color.dark_gray_primary)); 
       set1.setColor(context.getResources().getColor(R.color.colorPrimaryLight)); 
       set1.setHighLightColor(context.getResources().getColor(R.color.colorPrimaryLight)); 
       set1.setDrawValues(false); 

       ArrayList<IBarDataSet> dataSets = new ArrayList<>(); 
       dataSets.add(set1); 

       BarData data = new BarData(dataSets); 
       data.setValueTextSize(10f); 
       if (monthMap.size() >= 4) { 
        data.setBarWidth(2000000000f); 
       } else { 
        data.setBarWidth(2500000000f); 
       } 

       mChart.setData(data); 
      } 

      final CustomBarChartMarkerView mv = new CustomBarChartMarkerView(context, R.layout.view_custom_marker); 
      mChart.setMarker(mv); 
      mChart.setHighlightFullBarEnabled(true); 
      if (monthMap.size() > 1) { 
       if (monthMap.size() >= 4) { 
        xAxis.setLabelCount(4); 
       } else { 
        xAxis.setLabelCount(monthMap.size()); 
       } 
       mChart.setVisibility(View.VISIBLE); 
      } else { 
       mChart.setVisibility(View.GONE); 
      } 

모든 옵션과 조합을 시도했습니다. 여전히 원하는 출력을 얻지 못합니다. 막대 xaxis (이 경우 날짜)는 막대 바로 아래에 표시되지 않습니다.

답변

0

xAxis.setCenterAxisLabels(true);

센터 대신 원래 위치에서 그들을 그리기의 축 레이블. 특히 그룹화 된 BarChart에 유용합니다. JavaDoc을

+0

아니 나던 도움 버전 3.0.1을 사용했다. UI가 여전히 왜곡되어 있습니다. 내가 가정 한 모든 기능과 조합으로 검사했다. – Ankur

0

에서

아래로 x 축 사용자 정의 :

XAxis xAxis = chart.getXAxis(); 
    xAxis.setGranularity(1f); 
    xAxis.setGranularityEnabled(true); 
    xAxis.setCenterAxisLabels(true); 
    xAxis.setDrawGridLines(false); 
    xAxis.setAxisMaximum(6); 

나는