아래 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 (이 경우 날짜)는 막대 바로 아래에 표시되지 않습니다.
아니 나던 도움 버전 3.0.1을 사용했다. UI가 여전히 왜곡되어 있습니다. 내가 가정 한 모든 기능과 조합으로 검사했다. – Ankur