如何使使用 MPAndroidChart 库绘制的饼图中的图例居中?
How to center the legend in pie chart drawn using MPAndroidChart library?
我做了什么: 我使用 MPAndroidChart 库创建了一个饼图,最后在左角有图例。我尝试更改饼图宽度,但是当项目增加时,图例往往会换到第二行。
我的期望:我希望图例每次更新时都位于中心。甚至图例也换行到第二行,我希望它位于中间。我将不胜感激对此的任何建议。
谢谢!
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
>
</com.github.mikephil.charting.charts.PieChart>
Activity代码:
private void setupPieChart(){
//pupulating list of PieEntires
List<PieEntry> pieEntires = new ArrayList<>();
for( int i = 0 ; i<time.length;i++){
pieEntires.add(new PieEntry(time[i],activity[i]));
}
PieDataSet dataSet = new PieDataSet(pieEntires,"");
dataSet.setColors(ColorTemplate.MATERIAL_COLORS);
PieData data = new PieData(dataSet);
//pie slices text value
data.setValueTextSize(10);
//Get the chart
pieChart.setData(data);
pieChart.invalidate();
pieChart.setCenterText("50%");
pieChart.setDrawEntryLabels(false);
pieChart.setContentDescription("");
//pieChart.setDrawMarkers(true);
//pieChart.setMaxHighlightDistance(34);
pieChart.setEntryLabelTextSize(12);
pieChart.setHoleRadius(75);
//to remove bottom left description
pieChart.getDescription().setEnabled(false);
//legend attributes
Legend legend = pieChart.getLegend();
legend.setForm(Legend.LegendForm.CIRCLE);
legend.setTextSize(12);
legend.setFormSize(20);
legend.setFormToTextSpace(2);
//to wrap legend text
legend.setWordWrapEnabled(true);
Log.d("legend " ,legend.getEntries().toString());
}
通过在上述问题中提到的 setupPieChart()
中添加以下行,我能够使图例居中。
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
我做了什么: 我使用 MPAndroidChart 库创建了一个饼图,最后在左角有图例。我尝试更改饼图宽度,但是当项目增加时,图例往往会换到第二行。
我的期望:我希望图例每次更新时都位于中心。甚至图例也换行到第二行,我希望它位于中间。我将不胜感激对此的任何建议。
谢谢!
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
>
</com.github.mikephil.charting.charts.PieChart>
Activity代码:
private void setupPieChart(){
//pupulating list of PieEntires
List<PieEntry> pieEntires = new ArrayList<>();
for( int i = 0 ; i<time.length;i++){
pieEntires.add(new PieEntry(time[i],activity[i]));
}
PieDataSet dataSet = new PieDataSet(pieEntires,"");
dataSet.setColors(ColorTemplate.MATERIAL_COLORS);
PieData data = new PieData(dataSet);
//pie slices text value
data.setValueTextSize(10);
//Get the chart
pieChart.setData(data);
pieChart.invalidate();
pieChart.setCenterText("50%");
pieChart.setDrawEntryLabels(false);
pieChart.setContentDescription("");
//pieChart.setDrawMarkers(true);
//pieChart.setMaxHighlightDistance(34);
pieChart.setEntryLabelTextSize(12);
pieChart.setHoleRadius(75);
//to remove bottom left description
pieChart.getDescription().setEnabled(false);
//legend attributes
Legend legend = pieChart.getLegend();
legend.setForm(Legend.LegendForm.CIRCLE);
legend.setTextSize(12);
legend.setFormSize(20);
legend.setFormToTextSpace(2);
//to wrap legend text
legend.setWordWrapEnabled(true);
Log.d("legend " ,legend.getEntries().toString());
}
通过在上述问题中提到的 setupPieChart()
中添加以下行,我能够使图例居中。
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);