MPAndroidChart的坐标轴,自定义坐标轴数据,如何另辟蹊径

Posted Li_water

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MPAndroidChart的坐标轴,自定义坐标轴数据,如何另辟蹊径相关的知识,希望对你有一定的参考价值。

公司需要将体重秤的数据以折线图显示出来,奈何能力不够,x轴数据自定义,在苦试无果后,吾,放弃了。
后想到用布局去代替坐标轴。做出来的效果先放一下。


CHART-XML.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".line666">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1">
    <Button
        android:text="周"
        android:id="@+id/zh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="月"
        android:id="@+id/yu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10">
        <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/line_chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/></LinearLayout>
    <LinearLayout
        android:id="@+id/kk2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal">

    </LinearLayout>

</LinearLayout>
R.layout.text
<?xml version="1.0" encoding="utf-8"?>

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center"
    android:id="@+id/text"
    android:text="N/A"

    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

导入数据

导入数据库数据,当天开始的三十天内数据。
    public void bianli(Long s)
        if(s==30)
            s = (long)86400000*30;
        else if(s==7)
            s = (long)86400000*7;
        
        entries.clear();
        linearLayout.removeAllViews();

        cursor = db.query("tizhong",null, "riqi > ?", new String[]sdf.format(new Date(System.currentTimeMillis()-s)), null, null, null);
        if (cursor.moveToFirst()) 
            do 
// 遍历Cursor对象, 取出数据并打印
                a2= cursor.getString(cursor.getColumnIndex
                        ("id"));
                a4= cursor.getString(cursor.getColumnIndex
                        ("riqi"));
                a3 = cursor.getString(cursor.getColumnIndex
                        ("neirong"));
                //加入view来代替坐标轴
                View view2 = LayoutInflater.from(this).inflate(R.layout.text,linearLayout,false);
                    entries.add(new Entry(Float.parseFloat(a2),Float.parseFloat(a3)));
                TextView textView = view2.findViewById(R.id.text);
                textView.setText(a4);
                linearLayout.addView(view2);
             while (cursor.moveToNext());
        cursor.close();
    
//折线图部分

 LinearLayout linearLayout;
 LineChart lineChart;
     XAxis x;
      AxisBase y,y2;
      List<Entry> entries;
        
         //实例化
          lineChart = (LineChart) findViewById(R.id.line_chart);
         linearLayout= findViewById(R.id.kk2);
          entries = new ArrayList<Entry>();
       x = lineChart.getXAxis();
       //左y轴
        y = lineChart.getAxisLeft();
        //右y轴
        y2 = lineChart.getAxisRight();
        
LineDataSet dataSet = new LineDataSet(entries, "Label");
dataSet.setLineWidth(1f);
LineData lineData = new LineData(dataSet);

//关闭缩放,做戏做全套

lineChart.setScaleEnabled(false);
lineChart.setScaleXEnabled(false);
lineChart.setScaleYEnabled(false);
//x轴换到下面
x.setPosition(XAxis.XAxisPosition.BOTTOM);
 y2.setEnabled(false);
   //设置x标轴标签文字颜色
        x.setTextColor(Color.TRANSPARENT);
        //设置x此轴网格线颜色
        x.setGridColor(Color.TRANSPARENT);
        
        y.setAxisMaximum(100f);
        y.setAxisMinimum(0f);
        //显示数据
         dataSet.setDrawValues(true);
         //以下设置百度的-----------------------||||||
//设置折线粗细
        dataSet.setLineWidth(2);
//设置是否填充(效果图中颜色渐变效果)
        dataSet.setDrawFilled(true);
//设置折线颜色
        dataSet.setColor(Color.YELLOW);
//设置填充的drawable
        dataSet.setFillDrawable(getResources().getDrawable(R.drawable.cxk));
//是否绘制折线的点
        dataSet.setDrawCircles(true);
//设置模式
        dataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
        //标记数据显色
        dataSet.setValueTextColor(Color.WHITE);
        //高亮标记横竖线的颜色
        dataSet.setHighLightColor(Color.BLACK);
        //刷新
         lineChart.setData(lineData);
        lineChart.invalidate();

以上是关于MPAndroidChart的坐标轴,自定义坐标轴数据,如何另辟蹊径的主要内容,如果未能解决你的问题,请参考以下文章

MPAndroidChart 教程

mpandroidchart Y轴怎么显示整数

Android MPAndroidChart 折线图设置哪些属性?

android用 MPAndroidChart空间生成曲线,怎么更改初始放大倍数?初始刻度值?

python可视化自定义设置坐标轴的范围自定义设置主坐标轴刻度和次坐标轴刻度自定义坐标轴刻度的显示样式自定义坐标轴刻度数值的颜色以及小数点位数添加坐标轴刻度网格线自定义移动坐标轴的位置

python使用matplotlib可视化自定义设置坐标轴的范围自定义设置主坐标轴刻度和次坐标轴刻度自定义坐标轴刻度的显示样式自定义坐标轴刻度数值的颜色以及小数点位数添加坐标轴刻度网格线