相关文章推荐
帅呆的韭菜  ·  JS ...·  1 年前    · 
淡定的米饭  ·  【C++】C++ 文件读写 ...·  1 年前    · 
public void initChart(LineChart chart,int bgGridColor,int textColor,boolean showXAxis,boolean setMinZero,boolean showY) {
        if (bgGridColor == 0)
            bgGridColor = Color.parseColor("#50ffffff");
        if (textColor == 0)
            textColor = Color.parseColor("#ffffff");
        chart.setDrawGridBackground(false);//是否绘制网格背景颜色
        chart.getDescription().setEnabled(false);
        chart.setDrawBorders(false);//是否在折线图上添加边框
        chart.getAxisRight().setEnabled(false); // 右边的坐标轴
        chart.getXAxis().setEnabled(showXAxis);
        if (showY) {
            chart.setViewPortOffsets(10f, 10f, 10f, 10f);
        } else {
//            点击图标上圆点显示mark
//            MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view,textColor);
//            mv.setOffset();
//            mv.setChartView(chart); // For bounds control
//            chart.setMarker(mv);
            chart.setViewPortOffsets(45f, 20f, 45f, 4f);
//        chart.setBackgroundColor(color);//设置背景色
        chart.setTouchEnabled(true);
        chart.setDragEnabled(true);
//现在chart的缩放问题主要在这里,如果只设置scaleenable=true,只有在全屏显示所有点集合时才能进行x y分别缩放,如果在后面设置了
// X Y的rang显示范围时。则只能进行Y轴的缩放,只有这样分别设置,才能在设置显示点数限制时进行分别x y手指缩放
        chart.setScaleYEnabled(true);
        chart.setScaleXEnabled(true);
        chart.setScaleEnabled(true);
        chart.setPinchZoom(false);
        chart.setDragDecelerationFrictionCoef(0.5f);
        chart.setNoDataText(resource.getString(R.string.pmDataIsNull));
        chart.setNoDataTextColor(textColor);
        chart.setNoDataTextTypeface(Typeface.DEFAULT_BOLD);
        XAxis xAxis = chart.getXAxis();
        xAxis.setEnabled(true);
        xAxis.setDrawLabels(true);
        if (showY)
            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE);//设置x轴在下方
            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //画限制线条
//        LimitLine xLimit = new LimitLine(10f,"");
        //画虚线
        xAxis.enableGridDashedLine(10f, 10f, 0.2f);
        xAxis.setCenterAxisLabels(true);
        xAxis.setDrawGridLines(true);//是否绘制x轴网格
        xAxis.setDrawAxisLine(false);//是否绘制x轴
        xAxis.setTextColor(textColor);
        xAxis.setTextSize(10);
        xAxis.setYOffset(-0.5f);
        xAxis.setXOffset(-10f);
        xAxis.setGridColor(bgGridColor);
        xAxis.setGranularity(1f);
        xAxis.setAvoidFirstLastClipping(true);
        YAxis yAxis = chart.getAxisLeft();
        yAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                if (value<0){
                    return "";
                return String.valueOf((int)value);
        yAxis.setEnabled(true);
        yAxis.setDrawLabels(true);
        //设置最小值为零
        if (setMinZero)
            yAxis.setAxisMinimum(0);
        if (showY) {
            yAxis.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
            yAxis.setXOffset(5f);
        } else {
            yAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
            yAxis.setXOffset(30f);
        xAxis.enableGridDashedLine(10f, 5f, 0.2f);
        yAxis.setCenterAxisLabels(true);
        yAxis.setDrawGridLines(true);//是否绘制横向轴网格
        yAxis.setDrawAxisLine(false);//是否绘制x轴
        yAxis.setTextColor(textColor);
        yAxis.setTextSize(12);
        yAxis.setYOffset(-8f);
        yAxis.setGridColor(bgGridColor);
        //显示曲线的描述
        Legend mLegend = chart.getLegend();
        mLegend.setEnabled(false);
        //显示图例
//        if (showY) {
//            mLegend.setEnabled(false);
//        }else {
//            mLegend.setEnabled(true);
//            mLegend.setXOffset(100);
//            mLegend.setTextSize(10);
//            mLegend.setTextColor(textColor);
//            mLegend.setYOffset(0);
//            mLegend.setXEntrySpace(10);
//            mLegend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
//            mLegend.setForm(Legend.LegendForm.CIRCLE);//图例样式 (CIRCLE圆形;LINE线性;SQUARE是方块)
//        }

该方法一般放在baseActivity里面,方便继承类好调用

这是设置数据的例子,仅供参考

private void refreshChart(byte[] bytes) {
    ArrayList<Entry> values = new ArrayList<>();
    int sumForm = 0;
    for (int i = 0; i < bytes.length; i += 2) {
        byte[] data = new byte[]{bytes[i], bytes[i + 1]};
        int i1 = HexUtil.bytes2IntLittle(data)*3;
        values.add(new Entry(i, i1));
        sumForm = i1;
    fogTv.setText(String.valueOf(sumForm));
    LineDataSet set;
    if (chart.getData()!=null && chart.getData().getDataSetCount()>0){
        set = (LineDataSet) chart.getData().getDataSetByIndex(0);
        set.setValues(values);
        chart.getData().notifyDataChanged();
        chart.notifyDataSetChanged();
    } else {
        int i = resource.getColor(R.color.main_color);
        set = new CustomLineData(values, "DataSet 1");
        set.setColor(i);
        set.setDrawValues(true);
        set.setValueTextColor(i);
        set.setDrawCircles(true);
        set.setCircleColor(i);
        set.setMode(LineDataSet.Mode.CUBIC_BEZIER);//这是点的形状圆形
        set.setDrawFilled(true);
        set.setFillAlpha(150);
        ArrayList<ILineDataSet> dataSets = new ArrayList<>();
        dataSets.add(set);
        LineData data = new LineData(dataSets);
        chart.setData(data);
        chart.animateXY(1500,1500);
        chart.invalidate();
        chart.setVisibleXRange(0,12);//设置x轴显示范围,如果不设置会一次加载所有的点,很难看
        chart.setDragDecelerationFrictionCoef(0.9f);//设置滑动的阻力
                                    1. 设置轴的最小值:setAxisMinimum(float min):为此轴的条目设置一个最小值。2. 设置轴的最大值:setAxisMaximum(float max):为此轴的条目设置一个最大值。entries.add(BarEntry(0f, 30f))  // x=0 y=30 代表一个点。entries.add(BarEntry(1f, 80f))  // x=1 y=80 代表一个点。
                                    本文讲述对MPAndroidChart的使用,大部分是从其文档中摘录过来的。版本3.0.2一、MPAndroidChart概述MPAndroidChart 是一款专门用于Android绘制图表的库,相当强大,当然也有IOS的版本。GitHub上地址:Git-MPAndroidChart 。 
其特点如下:
支持8中不同图表类型
支持轴上的缩放
可拖动、平移
可突出选中的值(瞄准点及弹出po
                                    Description description = new Description();//描述
description.setEnabled(false);//取消描述
lineChart.setDescription(description);//设置图表描述
lineChart.setPinchZoom(false);//缩放
lineChart.setDoubleTapToZoomEnabled(false);//双击缩放
lineChart.setScaleEnabled(true);//缩放
                                    Android 平台绘图的开源库有好几个,最成熟最出名的就属于 MPAndroidChart 了,他能帮我们实现曲线图、折线图、柱状图、饼状图,分布图等等。同时还可以实现混合图表。
    float ratio = 1f;
    if (dataXList.size() >= 6) {
      ratio = (float) dataXList.size() / (float) 6;
      lineChart.moveViewToX(da...
                                    用这个方法设置后一页固定显示7个并且按比率放大
        //设置一页最大显示个数为7,超出部分就滑动
        float ratio = (float) bodyFatScaleDatasList.size()/(float) 7;
        //显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
        mLineChart.zoom(ratio,1f,0,0);
跳转到最后一个位置
 mLineChart.moveViewToX(lastIndex);
出现x轴第一
                                    新接手的项目中用到了MPAndroidChart,有一个BUG,X轴显示的标签(X轴的粒度为5分钟)不是想要的形式,如下图:将xAxis.setLabelCount(7);替换为xAxis.setLabelCount(7,true);解决,如下图:第2个重载方法的第二个参数是指强制绘制指定个数的标签,但是可能会造成绘制出现偏差,然后果然出现了,将图表放大出标签和图表对应不上:采用给linechar...
                                    本篇主要是LineChart实战相关知识和简单的源码剖析,相关源码没有,自己动手实践学习才是最有效的方法。LineChart Simple运行效果图个人感官觉得某些属性设置后太难看了并没有添加,so效果图上没有显示,如果你想测试这些属性自行参考下面的api介绍一些调用方法说明设置图标数据内容视图的背景颜色(默认RGB(240,240,240))mChart.setDrawGridBackground
                                    我正在使用MPAndroidChart,当有很多条目(我的设备上超过30个)时,图表似乎有一个自动缩放,因为X轴在开始时只显示偶数值 .然后,当在图表上(在屏幕上或通过代码 chart.zoom(2, 0, 0, 0) )进行缩放时,将显示x轴上的所有值 .由于导致自动缩放的条目数似乎取决于设备屏幕大小(因此以编程方式进行缩放似乎不是一个好选项),有没有办法强制图表不进行此缩放?我已经尝试了 ch...
        ValueFormatter xAxisFormatter = new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                if (value &amp;amp;amp;lt; 0 ||...
                                    今天来记录一下LineChart(折线图)的详细使用(美化)!
注:本人使用的版本是MPAndroidChart-v3.0.3(如若版本不同有某些方法更新,可在评论区留言,尽我所能帮你解决!)
上一篇文章讲了折线图的简单使用,这篇文章就来讲进阶使用(美化)
MPAndroidChart的详细使用——LineChart折线图(一)(简单使用)
MPAndroidChart的详细使用——BarChart条形图(一)(简单使用)
MPAndroidChart的详细使用——BarChart条形图(二)(详细美化)
MPAndroidChart的详细使用——BarChart条形图组(三)(条形图组)
                                    这个ViewPortHandler类负责处理图表的视图端口。这意味着它负责图表视图中可见的内容,它在平移和缩放级别、图表的大小以及绘图区域和当前偏移量方面都是当前状态。这个ViewPortHandler允许直接访问上述所有属性并修改它们。
上一篇:MPAndroidChart的详细使用——DataSet类以及DataSet子类
下一篇:MPAndroidChart的详细使用——FillFormat接口
建议:这方面的设置最好是有一定水平且熟悉API的人来进行操作,否则可能会出现很多意外错误。
ViewPortHandler handler = chart.getViewPortHan
                                    最近做了几个项目都需要用到数据的统计与分析 , 所有这几天就学习了一下MPAndroidChart , 把整理的一些知识点都分享一下, 以供大家参考.一 . MPAndroidChart 包含哪些图表 ?1. 折线图 LineChart2. 条形图 BarChart3. 条形折线图 Combined-Chart4. 圆饼图 PieChart5. 雷达图 ScatterChart6. K线图 Can...