Mpandroidchart 将值显示为文本
Mpandroidchart display values as text
我使用 Mpandroidchart 创建了饼图和折线图。
饼图
代码
getEntries();
pieDataSet = new PieDataSet(pieEntries, "");
pieDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
pieDataSet.setSliceSpace(2f);
pieDataSet.setValueTextColor(Color.BLACK);
pieDataSet.setValueTextSize(10f);
pieDataSet.setSliceSpace(5f);
pieData = new PieData(pieDataSet);
pieChart.getDescription().setEnabled(false);
pieChart.getLegend().setEnabled(false);
pieChart.setCenterText("Last Two Months Sale" );
pieChart.setCenterTextSize(14f);
pieChart.setCenterTextColor(Color.BLUE);
pieChart.animateX(1500);
pieChart.setData(pieData);
public void getEntries() {
pieEntries = new ArrayList<>();
pieEntries.add(new PieEntry(200,"March", 0));
pieEntries.add(new PieEntry(300, "April",1));
}
折线图
代码
private ArrayList<Entry> lineChartDataSet(){
ArrayList<Entry> dataSet = new ArrayList<Entry>();
dataSet.add(new Entry(1,200));
dataSet.add(new Entry(2,300));
dataSet.add(new Entry(3,500));
return dataSet;
}
lineDataSet = new LineDataSet(lineChartDataSet(),"data set");
lineDataSet.setLineWidth(1.75f);
lineDataSet.setCircleRadius(5f);
lineDataSet.setCircleHoleRadius(2.5f);
iLineDataSets.add(lineDataSet);
lineData = new LineData(iLineDataSets);
lineChart.setNoDataText("Data not Available");
lineChart.getDescription().setEnabled(false);
lineChart.getLegend().setEnabled(false);
lineDataSet.setColors(color);
lineChart.setTouchEnabled(true);
lineChart.setDragEnabled(true);
lineDataSet.setCircleColor(Color.parseColor("#891e9a"));
lineDataSet.setCircleHoleColor(Color.parseColor("#891e9a"));
lineDataSet.setDrawHighlightIndicators(false);
lineDataSet.setDrawCircles(true);
lineDataSet.setDrawCircleHole(true);
lineDataSet.setLineWidth(5);
lineDataSet.setCircleRadius(5);
lineDataSet.setCircleHoleRadius(5);
lineDataSet.setValueTextSize(10);
lineDataSet.setValueTextColor(Color.BLACK);
lineChart.setPinchZoom(false);
lineChart.getAxisLeft().setSpaceTop(40);
lineChart.getAxisLeft().setSpaceBottom(40);
XAxis xAxis = lineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setValueFormatter(new IndexAxisValueFormatter(xAxisLabel));
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
lineChart.getAxisRight().setEnabled(false);
lineChart.setData(lineData);
lineChart.invalidate();
两个图表都在显示,但我想更改值的格式。在 Pie
和 Line
图表中,只能添加 floating
值。但是我想添加字符串。
例子
我要执行以下操作
pieEntries.add(new PieEntry(200,"March", 0));
替换为
pieEntries.add(new PieEntry("200K","March", 0));
和
dataSet.add(new Entry(1,200));
替换为
dataSet.add(new Entry(1,"200K"));
如何实现?
非常感谢任何帮助。
您可以使用 ValueFormatter。创建 ValueFormatter 然后将其设置为 pieData
ValueFormatter formatter = new ValueFormatter() {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return ((int) value) + " " + "K";
}
};
pieData.setValueFormatter(formatter);
如果您使用 LargeValueFormatter
,它会自动将“1.000”等值转换为“1k”,将“1.000.000”转换为“1m”(百万),例如要使用 LargeValueFormatter
只需将其设置为 pieData.
pieData.setValueFormatter(new LargeValueFormatter())
另见 https://github.com/PhilJay/MPAndroidChart/wiki/The-ValueFormatter-interface
我使用 Mpandroidchart 创建了饼图和折线图。
饼图
代码
getEntries();
pieDataSet = new PieDataSet(pieEntries, "");
pieDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
pieDataSet.setSliceSpace(2f);
pieDataSet.setValueTextColor(Color.BLACK);
pieDataSet.setValueTextSize(10f);
pieDataSet.setSliceSpace(5f);
pieData = new PieData(pieDataSet);
pieChart.getDescription().setEnabled(false);
pieChart.getLegend().setEnabled(false);
pieChart.setCenterText("Last Two Months Sale" );
pieChart.setCenterTextSize(14f);
pieChart.setCenterTextColor(Color.BLUE);
pieChart.animateX(1500);
pieChart.setData(pieData);
public void getEntries() {
pieEntries = new ArrayList<>();
pieEntries.add(new PieEntry(200,"March", 0));
pieEntries.add(new PieEntry(300, "April",1));
}
折线图
代码
private ArrayList<Entry> lineChartDataSet(){
ArrayList<Entry> dataSet = new ArrayList<Entry>();
dataSet.add(new Entry(1,200));
dataSet.add(new Entry(2,300));
dataSet.add(new Entry(3,500));
return dataSet;
}
lineDataSet = new LineDataSet(lineChartDataSet(),"data set");
lineDataSet.setLineWidth(1.75f);
lineDataSet.setCircleRadius(5f);
lineDataSet.setCircleHoleRadius(2.5f);
iLineDataSets.add(lineDataSet);
lineData = new LineData(iLineDataSets);
lineChart.setNoDataText("Data not Available");
lineChart.getDescription().setEnabled(false);
lineChart.getLegend().setEnabled(false);
lineDataSet.setColors(color);
lineChart.setTouchEnabled(true);
lineChart.setDragEnabled(true);
lineDataSet.setCircleColor(Color.parseColor("#891e9a"));
lineDataSet.setCircleHoleColor(Color.parseColor("#891e9a"));
lineDataSet.setDrawHighlightIndicators(false);
lineDataSet.setDrawCircles(true);
lineDataSet.setDrawCircleHole(true);
lineDataSet.setLineWidth(5);
lineDataSet.setCircleRadius(5);
lineDataSet.setCircleHoleRadius(5);
lineDataSet.setValueTextSize(10);
lineDataSet.setValueTextColor(Color.BLACK);
lineChart.setPinchZoom(false);
lineChart.getAxisLeft().setSpaceTop(40);
lineChart.getAxisLeft().setSpaceBottom(40);
XAxis xAxis = lineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setValueFormatter(new IndexAxisValueFormatter(xAxisLabel));
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
lineChart.getAxisRight().setEnabled(false);
lineChart.setData(lineData);
lineChart.invalidate();
两个图表都在显示,但我想更改值的格式。在 Pie
和 Line
图表中,只能添加 floating
值。但是我想添加字符串。
例子
我要执行以下操作
pieEntries.add(new PieEntry(200,"March", 0));
替换为
pieEntries.add(new PieEntry("200K","March", 0));
和
dataSet.add(new Entry(1,200));
替换为
dataSet.add(new Entry(1,"200K"));
如何实现?
非常感谢任何帮助。
您可以使用 ValueFormatter。创建 ValueFormatter 然后将其设置为 pieData
ValueFormatter formatter = new ValueFormatter() {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return ((int) value) + " " + "K";
}
};
pieData.setValueFormatter(formatter);
如果您使用 LargeValueFormatter
,它会自动将“1.000”等值转换为“1k”,将“1.000.000”转换为“1m”(百万),例如要使用 LargeValueFormatter
只需将其设置为 pieData.
pieData.setValueFormatter(new LargeValueFormatter())
另见 https://github.com/PhilJay/MPAndroidChart/wiki/The-ValueFormatter-interface