• 3月9日


    今天的课上老师又提出了新要求:数据折线可视化和全国数据视图,那今天我们先来一个折线图吧!

    使用的支持包是MPAndroidChartv.jar,在这里下载即可:

    https://pan.baidu.com/s/108nOsWlZslhDhph-jeaGAQ   提取码:iqfo

    pages.java:

    复制代码
    public class pages extends AppCompatActivity {
    
        private LineChart lineChart; //折线图控件
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_pages);
    
            lineChart = findViewById(R.id.lc);
            initLineChart();
        }
    
        private void initLineChart() {
            lineChart.animateXY(2000, 2000);
            Description description = new Description();
            description.setText(""); 
            lineChart.setDescription(description);
            Legend legend = lineChart.getLegend();
            legend.setTextColor(0);
            setYAxis();
            setXAxis();
            setData();
        }
    
        private void setData() {
    // 模拟数据1
            dao dao=new dao(pages.this);
            SharedPreferences sp = pages.this.getSharedPreferences("temper", MODE_PRIVATE);
            String name=sp.getString("code","未设定");
    
            ArrayList<info> pa= dao.sermer(name);
            List<Entry> yVals1 = new ArrayList<>();
            for (int i = 0;i<pa.size(); i++) {
                yVals1.add(new Entry(i, Float.parseFloat(pa.get(i).getTem())));
            }
            // 2. 分别通过每一组Entry对象集合的数据创建折线数据集
            LineDataSet lineDataSet1 = new LineDataSet(yVals1, "体温变化");
            lineDataSet1.setCircleRadius(5); //设置点圆的半径
            lineDataSet1.setDrawCircleHole(false); // 不绘制圆洞,即为实心圆点
            // 值的字体大小为12dp
            lineDataSet1.setValueTextSize(12f);
            //将每一组折线数据集添加到折线数据中
            LineData lineData = new LineData(lineDataSet1);
            //设置颜色
            lineData.setValueTextColor(Color.BLACK);
            //将折线数据设置给图表
            lineChart.setData(lineData);
        }
    
    
        private void setXAxis() {
            XAxis xAxis = lineChart.getXAxis();
            xAxis.setDrawAxisLine(false);
            xAxis.setDrawGridLines(false);
            // 模拟X轴标签数据
            dao dao=new dao(pages.this);
            SharedPreferences sp = pages.this.getSharedPreferences("temper", MODE_PRIVATE);
            //存入数据
            String name=sp.getString("code","未设定");
            ArrayList<info> pa= dao.sermer(name);
            String[] weekStrs=new String[10];
            for(int i=0;i<pa.size();i++){
                 weekStrs[i]=pa.get(i).getTime();
            }
            xAxis.setLabelCount(pa.size());        xAxis.setTextColor(Color.GREEN); 
            xAxis.setTextSize(5f); 
            xAxis.setGranularity(1f);
            xAxis.setAxisMinimum(-0.1f); // 设置X轴最小值
            //设置颜色
            xAxis.setTextColor(Color.BLACK);
            // 设置标签的显示格式
            xAxis.setValueFormatter(new IndexAxisValueFormatter(){
                @Override
                public String getFormattedValue(float value) {
                    return weekStrs[(int) value];
                }
            });
            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 在底部显示
    
        }
    
        private void setYAxis() {
            YAxis yAxisLeft = lineChart.getAxisLeft();// 左边Y轴
            yAxisLeft.setDrawAxisLine(true); // 绘制Y轴
            yAxisLeft.setDrawLabels(true); // 绘制标签
            yAxisLeft.setAxisMaxValue(40); // 设置Y轴最大值
            yAxisLeft.setAxisMinValue(34); // 设置Y轴最小值
            yAxisLeft.setGranularity(2f); // 设置间隔尺寸
            yAxisLeft.setTextColor(Color.BLACK); //设置颜色
            yAxisLeft.setValueFormatter(new IndexAxisValueFormatter(){
                @Override
                public String getFormattedValue(float value) {
                    return (int)value  + "℃";
                }
            });
            // 右侧Y轴
            lineChart.getAxisRight().setEnabled(false); // 不启用
    
        }
    }
    复制代码

    activity_pages.xml:

        <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/lc"
            android:layout_width="match_parent"
            android:background="#FFFFFF"
            android:layout_height="400dp"/>

    这样就可以显示如下的一个折线图了(为了测试提前编了几天的数据):

     这个控件还可以做饼图、柱形图、旭日图之类很帅气的视图,我这个最多算是超级小白入门作品啦……

    好,那么今天就是这些!

  • 相关阅读:
    【Life】 今天的思考
    【openpyxl】 关于 单元格背景色 的疑惑
    【xlwings】 wps 和 office 的excel creat_sheet区别
    [git] git error: unable to unlink old
    【python tkinter】对于窗口存在的认识
    【求教 探讨】python tkinter的messagebox
    [python]近日 用3种库 实现简单的窗口 的回顾~
    AE(After Effects)的简单使用——记一次模板套用的过程
    python3爬虫应用--爬取网易云音乐(两种办法)
    【KataDaily 191015】Sort the Gift Code
  • 原文地址:https://www.cnblogs.com/ldy2396/p/14908797.html
Copyright © 2020-2023  润新知