簡體   English   中英

使用 MPAndroidChart 庫重疊餅圖標簽

[英]Pie Chart Labels Overlapping using MPAndroidChart Library

我正在使用 PhilJay MPAndroidChart庫:

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

我實施了餅圖。 條目過多的餅圖會導致標簽重疊,如下所示: 在此處輸入圖像描述

但我需要類似下圖的東西。 這非常非常漂亮,沒有任何重疊,背景為 label:

在此處輸入圖像描述

這是我的代碼:

PieDataSet dataSet = new PieDataSet(entries, getString(R.string.chart_guide));
dataSet.setDrawValues(DRAW_VALUES); // To show/not show Slice Texts
dataSet.setDrawIcons(DRAW_ICONS);
dataSet.setSliceSpace(0f);
dataSet.setIconsOffset(new MPPointF(0, 40));
dataSet.setSelectionShift(5f);
setSlicesColors(dataSet);
dataSet.setSelectionShift(0f);

// Outside values
dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
dataSet.setValueLinePart1OffsetPercentage(20f);
dataSet.setValueLinePart1Length(0.2f);
dataSet.setValueLinePart2Length(0.4f);
dataSet.setUsingSliceColorAsValueLineColor(USING_SLICE_COLOR_AS_VALUE_LINE_COLOR);
binding.pieChart.setExtraOffsets(5, 10, 5, 5);

PieData data = new PieData(dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(11f);
data.setValueTextColor(Color.BLUE);

binding.pieChart.setData(data);

binding.pieChart.highlightValues(null);
binding.pieChart.invalidate();

binding.pieChart.setDrawMarkers(DRAW_MARKERS); // To remove markers when click
binding.pieChart.setDrawEntryLabels(DRAW_ENTRY_LABELS); // To remove labels from piece of pie
binding.pieChart.setEntryLabelColor(Color.BLACK);
binding.pieChart.setEntryLabelTextSize(12f);

binding.pieChart.setUsePercentValues(USE_PERCENT_VALUES);
binding.pieChart.getDescription().setEnabled(DESCRIPTION_ENABLED); // To remove description of pie

binding.pieChart.setDragDecelerationFrictionCoef(0.95f);

binding.pieChart.setCenterText(generateCenterSpannableText());

binding.pieChart.setDrawHoleEnabled(DRAW_HOLE_ENABLED);
binding.pieChart.setHoleColor(Color.WHITE);

binding.pieChart.setTransparentCircleColor(Color.LTGRAY);
binding.pieChart.setTransparentCircleAlpha(110);

binding.pieChart.setHoleRadius(58f);
binding.pieChart.setTransparentCircleRadius(61f);

binding.pieChart.setDrawCenterText(DRAW_CENTER_TEXT);

binding.pieChart.setRotationAngle(0);
// enable rotation of the chart by touch
binding.pieChart.setRotationEnabled(ROTATION_ENABLED);
binding.pieChart.setHighlightPerTapEnabled(HIGHLIGHT_PER_TAP_ENABLED);

binding.pieChart.animateY(2000, Easing.EaseInOutQuad); // Starter Animation

legend = binding.pieChart.getLegend();
legend.setEnabled(GUIDE_ENABLED); // To show/not show Chart Guide
legend.setDrawInside(DRAW_INSIDE);

有什么解決方案可以實現我發送的圖表嗎?

嘗試使用minAngleForSlices參數設置最小角度,以便可以看到每個扇區並在它們之間保持一定距離。

我遇到了同樣的問題,要解決重疊的 label 問題,請添加以下行

pieChart.setMinAngleForSlices(20f);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM