MPAndroidChart 基础
图表创建方式
柱状图:
BarChart barChart = findViewById(R.id.BarChart);
List<BarEntry> entryList = new ArrayList<>();
entryList.add(new BarEntry(0,20)); //传入X轴和Y轴值
entryList.add(new BarEntry(1,20));
BarDataSet barDataSet = new BarDataSet(entryList,"测试");
BarData barData = new BarData(barDataSet);
barChart.setData(barData);
barChart.invalidate();
xml:
<com.github.mikephil.charting.charts.BarChart
android:layout_width=""
android:layout_height="">
</com.github.mikephil.charting.charts.BarChart>
折线图:
LineChart lineChart = findViewById(R.id.linechart); //创建Linechart
//创建好LineChart后,添加数据
//创建一个Entry的list对象 这里Entry来自于com.github.mikephil.charting.data.Entry
List<Entry> entryList = new ArrayList<>();
entryList.add(new Entry(1,2));
entryList.add(new Entry(2,3));
entryList.add(new Entry(3,4));
entryList.add(new Entry(4,5));
//将创建好的list对象放入LineDataSet对象中
LineDataSet dataSet = new LineDataSet(entryList,"测试线");
//label中传入这条线的名称
//创建Linedata对象,并将dataset传入
LineData data = new LineData(dataSet);
//最后将data放入linechart中
lineChart.setData(data);
//更新数据,不设置将不会自动更新
lineChart.invalidate();
xml:
<com.github.mikephil.charting.charts.LineChart
android:layout_width=""
android:layout_height=""> </com.github.mikephil.charting.charts.LineChart>
饼图:
PieChart pieChart =findViewById(R.id.piechart); //创建PieChart
// 添加数据
// 创建pieEntry list对象
List<PieEntry> pielist = new ArrayList<>();
pielist.add(new PieEntry(20f,"bule")); //以一个参数所占百分比,第二参数名称
pielist.add(new PieEntry(15f,"red"));
// 将list对象添加到Piedataset中
PieDataSet pieDataSet = new PieDataSet(pielist,"测试");
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
pieChart.invalidate();
xml:
<com.github.mikephil.charting.charts.PieChart
android:layout_width=""
android:layout_height="">
</com.github.mikephil.charting.charts.PieChart>
图表的美化和细节设置
BarChart(柱状图)
BarChart barChart = findViewById(R.id.BarChart);
barChart.setDragEnabled(true);
List<BarEntry> entryList = new ArrayList<>();
entryList.add(new BarEntry(1f,20)); //传入X轴和Y轴值
entryList.add(new BarEntry(2f,-20));
entryList.add(new BarEntry(3f,20)); //传入X轴和Y轴值
entryList.add(new BarEntry(4f,-20));
entryList.add(new BarEntry(5f,-20)); //传入X轴和Y轴值
entryList.add(new BarEntry(6f,20));
// barChart.setDrawGridBackground(false);
// XAxis xAxis = barChart.getXAxis();
// xAxis
YAxis yAxis = barChart.getAxisLeft();
yAxis.setDrawGridLines(false); //设置网格线
yAxis.setDrawAxisLine(false); //设置轴线
yAxis.setDrawLabels(false); //设置轴标签
yAxis.setDrawZeroLine(true); //设置0线
barChart.getAxisRight().setEnabled(false); //设置不显示右轴
XAxis xAxis = barChart.getXAxis();
xAxis.setDrawGridLines(false);
xAxis.setDrawLabels(false);
BarDataSet barDataSet = new BarDataSet(entryList,"测试");
barDataSet.setColors(new int[]{R.color.colorAccent,R.color.colorPrimary},MainActivity.this); //为多个对象那个添加颜色
BarData barData = new BarData(barDataSet);
barChart.setData(barData);
barChart.invalidate();
LineChart(折线图)
PieChart(饼图)
设置轴标签文字
final List<String> strings = new ArrayList<>();
strings.add("昨天");
strings.add("今天");
strings.add("明天");
strings.add("星期五");
strings.add("星期六");
strings.add("星期天");
// 设置X轴标记
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float v, AxisBase axisBase) {
return String.valueOf(strings.get((int)v % strings.size()));
}
});
交互
-
setTouchEnabled(boolean enabled)
:允许启用/禁用与图表的所有可能的触摸交互。
-
setDragEnabled(boolean enabled)
:启用/禁用图表的拖动(平移)。
-
setScaleEnabled(boolean enabled)
:启用/禁用两个轴上的图表缩放。
-
setScaleXEnabled(boolean enabled)
:启用/禁用x轴缩放。
-
setScaleYEnabled(boolean enabled)
:启用/禁用y轴缩放。
-
setPinchZoom(boolean enabled)
:如果设置为true,则启用缩放缩放。如果禁用,则可以单独缩放x轴和y轴。
-
setDoubleTapToZoomEnabled(boolean enabled)
:将此设置为false以禁止通过双击来缩放图表
轴设置
-
setEnabled(boolean enabled)
:将轴设置为启用或禁用。如果禁用,则无论其他任何设置如何,都不会绘制轴的任何部分。
-
setDrawLabels(boolean enabled)
:将其设置为true以启用绘制轴标签。
-
setDrawAxisLine(boolean enabled)
:如果应绘制沿轴(轴线)的线,则将此设置为true。
-
setDrawGridLines(boolean enabled)
:将此属性设置为true以启用绘制轴的网格线。
-
setAxisMaximum(float max)
:为此轴设置自定义最大值。如果设置,则不会根据提供的数据自动计算该值。
-
resetAxisMaximum()
:调用此方法以撤消先前设置的最大值。通过这样做,您将再次允许轴自动计算它的最大值。
-
setAxisMinimum(float min)
:为此轴设置自定义最小值。如果设置,则不会根据提供的数据自动计算该值。
-
resetAxisMinimum()
:调用此方法以撤消先前设置的最小值。通过这样做,您将再次允许轴自动计算它的最小值。
-
setStartAtZero(boolean enabled)
:不推荐使用 - 使用setAxisMinValue(...)
或setAxisMaxValue(...)
替代。
-
setInverted(boolean enabled)
:如果设置为true,则此轴将被反转,这意味着最高值将位于底部,最低值将位于顶部。
-
setSpaceTop(float percent)
:设置图表中最高值的顶部间距(以总轴 - 范围的百分比表示)与轴上的最高值进行比较。
-
setSpaceBottom(float percent)
:设置图表中最低值的底部间距(以总轴 - 范围的百分比表示)与轴上的最低值进行比较。
-
setShowOnlyMinMax(boolean enabled)
:如果启用,此轴将仅显示其最小值和最大值。这将忽略/覆盖定义的标签计数(如果不强制)。
-
setLabelCount(int count, boolean force)
:设置y轴的标签数。请注意,此数字不固定(如果强制== false),并且只能近似。如果强制启用(true),则绘制精确指定的标签计数 - 这可能导致轴上的数字不均匀。
-
setPosition(YAxisLabelPosition pos)
:设置应绘制轴标签的位置。INSIDE_CHART或OUTSIDE_CHART。
-
setGranularity(float gran)
:设置y轴值之间的最小间隔。这可用于避免在放大到为轴设置的小数位数不再允许区分两个轴值的点时重复值。
-
setGranularityEnabled(boolean enabled)
:启用粒度特征,在放大时限制y轴的间隔。默认值:false
-
setTextColor(int color)
:设置轴标签的颜色。
-
setTextSize(float size)
:以dp为单位设置轴标签的文本大小。
-
setTypeface(Typeface tf)
:Typeface
为轴标签设置自定义。
-
setGridColor(int color)
:设置此轴的网格线的颜色。
-
setGridLineWidth(float width)
:设置此轴的网格线的宽度。
-
setAxisLineColor(int color)
:设置此轴的轴线颜色。
-
setAxisLineWidth(float width)
:设置此轴的轴线宽度。
-
enableGridDashedLine(float lineLength, float spaceLength, float phase)
:允许以虚线模式绘制网格线,例如像“ - - - - - - ”。“lineLength”控制线条的长度,“spaceLength”控制线条之间的空间,“phase”控制起点。
网友评论