Android图表库HelloChart绘制多折线图

本文实例为大家分享了Android图表库HelloChart绘制多折线图的具体代码,供大家参考,具体内容如下

一、效果图

二、实现步骤

1.添加依赖库

compile 'com.github.lecho:hellocharts-android:v1.5.8'

2.布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        android:id="@+id/include_id"
        layout="@layout/titlelayout_theme"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="4dp"
            android:orientation="horizontal">

            <View
                android:layout_width="6dp"
                android:layout_height="6dp"
                android:background="#BF0815" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:text="噪音"
                android:layout_marginLeft="5dp"
                android:textColor="@color/common_gray3"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="4dp"
            android:orientation="horizontal">

            <View
                android:layout_width="6dp"
                android:layout_height="6dp"
                android:background="#088B05" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:text="温度"
                android:layout_marginLeft="5dp"
                android:textColor="@color/common_gray3"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="4dp"
            android:orientation="horizontal">

            <View
                android:layout_width="6dp"
                android:layout_height="6dp"
                android:background="#0862D8" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:text="pm2.5"
                android:layout_marginLeft="5dp"
                android:textColor="@color/common_gray3"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="4dp"
            android:orientation="horizontal">

            <View
                android:layout_width="6dp"
                android:layout_height="6dp"
                android:background="#552705" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:text="风速"
                android:layout_marginLeft="5dp"
                android:textColor="@color/common_gray3"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="4dp"
            android:orientation="horizontal">

            <View
                android:layout_width="6dp"
                android:layout_height="6dp"
                android:background="#6221D1" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:text="pm10"
                android:layout_marginLeft="5dp"
                android:textColor="@color/common_gray3"/>

        </LinearLayout>
    </LinearLayout>

    <lecho.lib.hellocharts.view.LineChartView
        android:id="@+id/line_chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

3.Activity类

package com.aldx.hccraftsman.activity;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.aldx.hccraftsman.R;
import com.aldx.hccraftsman.application.Application;
import com.aldx.hccraftsman.base.BaseActivity;
import com.aldx.hccraftsman.entity.DustLineChart;
import com.aldx.hccraftsman.entity.DustLineChartModel;
import com.aldx.hccraftsman.entity.TempChartData;
import com.aldx.hccraftsman.jsonparse.JSONObject;
import com.aldx.hccraftsman.jsonparse.ReflectUtil;
import com.aldx.hccraftsman.okHttp.LoadingDialogCallback;
import com.aldx.hccraftsman.utils.Api;
import com.aldx.hccraftsman.utils.Constants;
import com.aldx.hccraftsman.utils.LogUtil;
import com.aldx.hccraftsman.utils.Utils;
import com.lzy.okgo.OkGo;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.qqtheme.framework.picker.DatePicker;
import cn.qqtheme.framework.picker.DateTimePicker;
import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.ValueShape;
import lecho.lib.hellocharts.model.Viewport;
import lecho.lib.hellocharts.view.LineChartView;
import okhttp3.Call;
import okhttp3.Response;

/**
 * author: chenzheng
 * created on: 2017/9/29 10:18
 * description:
 */

public class DustLineChartActivity extends BaseActivity {

    @BindView(R.id.line_chart)
    LineChartView lineChart;
    @BindView(R.id.back_iv)
    ImageView backIv;
    @BindView(R.id.layout_back)
    LinearLayout layoutBack;
    @BindView(R.id.title_tv)
    TextView titleTv;
    @BindView(R.id.right_tv)
    TextView rightTv;
    @BindView(R.id.layout_right)
    LinearLayout layoutRight;

    private String projectId;
    private List<Integer> colors = new ArrayList<>();
    private List<TempChartData> listTemp = new ArrayList<TempChartData>();//数据
    private List<AxisValue> mAxisXValues = new ArrayList<AxisValue>();   //x轴方向的坐标数据
    private List<AxisValue> mAxisYValues = new ArrayList<AxisValue>();            //y轴方向的坐标数据
    private List<Float> distanceList = new ArrayList<Float>();
    private boolean hasAxes = true;       //是否有轴,x和y轴
    private boolean hasAxesNames = true;   //是否有轴的名字
    private boolean hasLines = true;       //是否有线(点和点连接的线,选择false只会出现点)
    private boolean hasPoints = true;       //是否有点(每个值的点)
    private ValueShape shape = ValueShape.CIRCLE;    //点显示的形式,圆形,正方向,菱形
    private boolean isFilled = false;                //是否是填充
    private boolean hasLabels = true;               //每个点是否有名字
    private boolean isCubic = false;                 //是否是立方的,线条是直线还是弧线
    private boolean hasLabelForSelected = false;       //每个点是否可以选择(点击效果)
    private LineChartData data;          // 折线图封装的数据类

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_dust_line_chart);
        projectId = getIntent().getStringExtra("projectId");
        ButterKnife.bind(this);

        initView();
        initData();
        doRequest();
    }

    private void initData() {
        //颜色集合
        colors.add(0xff0862D8);
        colors.add(0xff6221D1);
        colors.add(0xff552705);
        colors.add(0xff088B05);
        colors.add(0xffBF0815);
    }

    private void initView() {
        titleTv.setText("扬尘监测折线图");
        Calendar calendar1 = Calendar.getInstance();
        String sss = Utils.DATE_SIMPLE_FORMATER.format(calendar1.getTime());
        rightTv.setText(sss);
        layoutRight.setVisibility(View.VISIBLE);

    }

    public void doRequest() {
        OkGo.get(Api.GET_MONITOR_MONTH_BY_PROJECT_ID)
                .tag(this)
                .params("projectId", projectId)
                .params("time", rightTv.getText().toString())
                .execute(new LoadingDialogCallback(this, Constants.LOADING_TXT) {

                    @Override
                    public void onSuccess(String s, Call call, Response response) {
                        DustLineChartModel dustLineChartModel = null;
                        try {
                            dustLineChartModel = (DustLineChartModel) ReflectUtil
                                    .copy(DustLineChartModel.class,
                                            new JSONObject(s));
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        if (dustLineChartModel != null) {
                            if (dustLineChartModel.code == Api.SUCCESS_CODE) {
                                if (dustLineChartModel.data != null) {
                                    setLineChartData(dustLineChartModel.data);
                                }
                            } else {
                                Application.showCodeToast(DustLineChartActivity.this, dustLineChartModel.code);
                            }
                        }

                    }

                    @Override
                    public void onError(Call call, Response response, Exception e) {
                        super.onError(call, response, e);
                        Application.showResultToast(DustLineChartActivity.this, call, e);
                    }

                });
    }

    private void setLineChartData(List<DustLineChart> dlcList) {
        listTemp.clear();
        mAxisXValues.clear();
        mAxisYValues.clear();
        distanceList.clear();
        float yMax = 0;
        try {
            int xCount = 0;
            Calendar curCalendar = Calendar.getInstance();
            String curDateStr = Utils.DATE_SIMPLE_FORMATER.format(curCalendar.getTime());
            if (rightTv.getText().toString().equals(curDateStr)) {
                xCount = curCalendar.get(Calendar.DAY_OF_MONTH);
            } else {
                Date queryDate = Utils.DATE_FORMATER.parse(rightTv.getText().toString() + "-01");
                Calendar queryCalendar = Calendar.getInstance();
                queryCalendar.setTime(queryDate);
                xCount = queryCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            }
            LogUtil.e("xCount=" + xCount);
            for (int j = 1; j <= xCount; j++) {
                boolean isFinded = false;
                for (DustLineChart dlc : dlcList) {
                    String tempStr = dlc.time;
                    if (!Utils.isEmpty(tempStr)) {
                        Date tempDate = Utils.DATE_FORMATER.parse(tempStr);
                        Calendar tempCalendar = Calendar.getInstance();
                        tempCalendar.setTime(tempDate);
                        if (j == (tempCalendar.get(Calendar.DAY_OF_MONTH))) {
                            isFinded = true;
                            if (Utils.toFloat(dlc.pm2) > yMax) {
                                yMax = Utils.toFloat(dlc.pm2);
                            }
                            if (Utils.toFloat(dlc.pm10) > yMax) {
                                yMax = Utils.toFloat(dlc.pm10);
                            }
                            if (Utils.toFloat(dlc.windspeed) > yMax) {
                                yMax = Utils.toFloat(dlc.windspeed);
                            }
                            if (Utils.toFloat(dlc.temperature) > yMax) {
                                yMax = Utils.toFloat(dlc.temperature);
                            }
                            if (Utils.toFloat(dlc.noise) > yMax) {
                                yMax = Utils.toFloat(dlc.noise);
                            }
                            listTemp.add(new TempChartData(j + "", Utils.toFloat(dlc.pm2), Utils.toFloat(dlc.pm10),
                                    Utils.toFloat(dlc.windspeed), Utils.toFloat(dlc.temperature), Utils.toFloat(dlc.noise)));
                            break;
                        }
                    }
                }
                if (!isFinded) {
                    listTemp.add(new TempChartData(j + "", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
                }
            }

            //设置x轴坐标 ,显示的是时间5-1,5-2.。。。
            mAxisXValues.clear();
            for (int i = 1; i <= xCount; i++) {      //mClockNumberLength
                mAxisXValues.add(new AxisValue(i).setLabel(i + ""));
            }

            mAxisYValues.clear();
            float temp = (yMax + 10) / 10;
            for (int k = 0; k < 10; k++) {
                float ttt = temp * k;
                float fff = Utils.toFloat(((int)ttt)+"");
                mAxisYValues.add(new AxisValue(fff).setLabel("" + (int)fff));

            }

            //获取距离
            for (int i = 1; i <= listTemp.size(); i++) {
                float apart = i;//得到的拒Y轴的距离
                distanceList.add(apart);
            }
            //存放线条对象的集合
            List<Line> lines = new ArrayList<Line>();
            lines.clear();
            //把数据设置到线条上面去
            for (int i = 0; i < 5; ++i) {
                List<PointValue> values = new ArrayList<PointValue>();
                for (int j = 0; j < listTemp.size(); ++j) {
                    //i=0是最高温度的线,i=1,是最低温度的线
                    //PointValue的两个参数值,一个是距离y轴的长度距离,另一个是距离x轴长度距离
                    if (i == 0) {
                        values.add(new PointValue(distanceList.get(j), listTemp.get(j).pm2).setLabel("" + listTemp.get(j).pm2));
                    } else if (i == 1) {
                        values.add(new PointValue(distanceList.get(j), listTemp.get(j).pm10).setLabel("" + listTemp.get(j).pm10));
                    } else if (i == 2) {
                        values.add(new PointValue(distanceList.get(j), listTemp.get(j).windspeed).setLabel("" + listTemp.get(j).windspeed));
                    } else if (i == 3) {
                        values.add(new PointValue(distanceList.get(j), listTemp.get(j).temperature).setLabel("" + listTemp.get(j).temperature));
                    } else if (i == 4) {
                        values.add(new PointValue(distanceList.get(j), listTemp.get(j).noise).setLabel("" + listTemp.get(j).noise));
                    }

                }

                Line line = new Line(values);
                //设置线条的基本属性
                line.setColor(colors.get(i));
                line.setShape(shape);
                line.setCubic(isCubic);
                line.setFilled(isFilled);
                line.setHasLabels(hasLabels);
                line.setHasLabelsOnlyForSelected(hasLabelForSelected);
                line.setHasLines(hasLines);
                line.setHasPoints(hasPoints);
                line.setStrokeWidth(1);
                line.setPointRadius(3);
                lines.add(line);
            }

            data = new LineChartData(lines);

            if (hasAxes) {
                Axis axisX = new Axis();
                Axis axisY = new Axis().setHasLines(true);
                if (hasAxesNames) {
                    axisX.setName("日期");
                    axisY.setName("数值");
                }

                //对x轴,数据和属性的设置
                axisX.setTextSize(8);//设置字体的大小
                axisX.setHasTiltedLabels(false);//x坐标轴字体是斜的显示还是直的,true表示斜的
                axisX.setTextColor(Color.BLACK);//设置字体颜色
                axisX.setHasLines(true);//x轴的分割线
                axisX.setValues(mAxisXValues); //设置x轴各个坐标点名称

                //对Y轴 ,数据和属性的设置
                axisY.setTextSize(10);
                axisY.setHasTiltedLabels(false);//true表示斜的
                axisY.setTextColor(Color.BLACK);//设置字体颜色
                axisY.setValues(mAxisYValues); //设置x轴各个坐标点名称

                data.setAxisXBottom(axisX);//x轴坐标线的文字,显示在x轴下方
//            data.setAxisXTop();      //显示在x轴上方
                data.setAxisYLeft(axisY);   //显示在y轴的左边

            } else {
                data.setAxisXBottom(null);
                data.setAxisYLeft(null);
            }

            data.setBaseValue(2f); //设置反向覆盖区域颜色  ??
            data.setValueLabelBackgroundAuto(false);//设置数据背景是否跟随节点颜色
            data.setValueLabelBackgroundColor(Color.BLUE);//设置数据背景颜色
            data.setValueLabelBackgroundEnabled(false);//设置是否有数据背景
            data.setValueLabelsTextColor(Color.RED);//设置数据文字颜色
            data.setValueLabelTextSize(11);//设置数据文字大小
            data.setValueLabelTypeface(Typeface.MONOSPACE);//设置数据文字样式
            lineChart.setLineChartData(data);     //将数据添加到控件中
            lineChart.setViewportCalculationEnabled(false);

            lineChart.setZoomType(ZoomType.HORIZONTAL_AND_VERTICAL);//设置线条可以水平方向收缩
            final Viewport v = new Viewport(lineChart.getMaximumViewport());
            v.bottom = 0;
            v.top = yMax+10;
            v.left = 0;
            v.right = listTemp.size(); //  listBlood.size() - 1//如何解释
            lineChart.setMaximumViewport(v);
            lineChart.setCurrentViewport(v);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void startActivity(Context context, String projectId) {
        Intent intent = new Intent(context, DustLineChartActivity.class);
        intent.putExtra("projectId", projectId);
        context.startActivity(intent);
    }

    @OnClick({R.id.layout_back, R.id.layout_right})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.layout_back:
                finish();
                break;
            case R.id.layout_right:
                chooseDate();
                break;
        }
    }

    private void chooseDate() {
        Calendar cal = Calendar.getInstance();
        try {
            cal.setTime(Utils.DATE_FORMATER.parse(rightTv.getText().toString()+"-01"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar curCal = Calendar.getInstance();
        int curMonth = cal.get(Calendar.MONTH) + 1;
        int curYear = cal.get(Calendar.YEAR);
        final DatePicker picker = new DatePicker(this, DateTimePicker.YEAR_MONTH);
        picker.setRangeEnd(curCal.get(Calendar.YEAR), curCal.get(Calendar.MONTH) + 1);
        picker.setRangeStart(2010, 1);
        picker.setUseWeight(true);
        picker.setSelectedItem(curYear, curMonth);
        picker.setOnDatePickListener(new DatePicker.OnYearMonthPickListener() {
            @Override
            public void onDatePicked(String year, String month) {
                rightTv.setText(year + "-" + month);
                doRequest();
            }
        });
        picker.show();
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android HelloChart开源库图表之折线图的实例代码

    前面我们介绍了开源图表库MPAndroidChart,请参考: Android MPAndroidChart开源库图表之折线图的实例代码 我们今天介绍的将是一个更为优秀的图表库,比MPAndroidChart性能更好,功能更完善,UI风格更美观,坐标轴更精细. 支持缩放.滑动以及平移.Zoom(pinch to zoom, double tap zoom), scroll and fling 支持自定义坐标轴(比如坐标轴位置:上下左右内部),支持自动生成坐标轴.Custom and auto-g

  • Android绘制动态折线图

    所谓动态折线图,就是折线图能随着手指的滑动进行动态绘制,这里很定会产生动画效果.基于这个效果,这里使用SurfaceView进行制图. 实现步奏如下: (1): 这里新建一个绘图ChartView,继承SurfaceView并实现SurfaceHolder.Callback , Runnable接口,主要绘图工作在子线程中完成. (2):现实 SurfaceHolder.Callback接口的三个方法,并在 surfaceCreated中开启子线程进行绘图. (3):重写onTouchEvent

  • Android MPAndroidChart开源库图表之折线图的实例代码

    本文讲述了Android MPAndroidChart开源库图表之折线图的实例代码.分享给大家供大家参考,具体如下: 承接上一篇文章,请参考Android HelloChart开源库图表之折线图的实例代码 1. 将mpandroidchartlibrary-2-0-8.jar包copy到项目的libs中: 2. 定义xml文件. 3.  主要Java逻辑代码如下,注释已经都添加上了. package com.example.mpandroidlinechart; import java.util

  • Android开发之天气趋势折线图

    先来看下效果: 控件内容比较简单,就是一个普通的折线图,上下分别带有数字,点击的时候显示当天温度的差值. 创建一个类继承自View,并添加两个构造方法: public class TrendGraph extends View { public TrendGraph(Context context) { // 在java代码中创建调用 super(context); } public TrendGraph(Context context, AttributeSet attrs) { // 在xm

  • 详解Android图表 MPAndroidChart折线图

    1.介绍 MPAndroidChart GitHub地址 MPAndroidChart的强大之处就不在多说了,目前最新的版本是3.0.1,在新版本中很多方法都被弃用了,这个要注意一下,在网上查到的大多数资料都是关于旧版本的,今天来实现一下折线图,把过程记录下来,分享给大家. 效果图: 2.引入开源库 在项目根目录的build.gradle文件中加入如下代码 allprojects { repositories { maven { url "https://jitpack.io" } }

  • Android自定义控件实现折线图

    本文实例实现一个如下图所示的Android折线图,供大家参考,具体内容如下 首先是控件绘图区域的划分,控件左边取一小部分(控件总宽度的八分之一)绘制表头,右边剩余的部分绘制表格 确定表格的行列数,首先绘制一个三行八列的网格,设置好行列的坐标后开始绘制 /*绘制三条横线*/ for(int i=0;i<3;i++){ canvas.drawLine(textWide, mLineYs[i], totalWidth, mLineYs[i], mPaintLine); } /*绘制八条竖线*/ for

  • Android自定义View实现折线图效果

    下面就是结果图(每种状态用一个表情图片表示): 一.主页面的布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height=&quo

  • Android图表库HelloCharts的实例详解

    目录 概述 LineChartView PointValue Line Axis AxisValue LineChartData Chart 概述 效果图,数据可平移查看历史 build.gradle implementation 'com.github.lecho:hellocharts-library:1.5.8@aar' layout 直接在布局中加入相应的图表控件 <lecho.lib.hellocharts.view.LineChartView android:id="@+id/

  • MPAndroidChart开源图表库的使用介绍之饼状图、折线图和柱状图

    MPAndroidChart开源图表库之饼状图 为大家介绍一款图标开源库MPAndroidChart,它不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,用起来非常灵活.MPAndroidChart同样拥有常用的图表类型:线型图.饼图.柱状图和散点图. mpandroidchartlibrary.jar包下载地址: https://github.com/PhilJay/MPAndroidChart/releases 下面主要实现以下饼状图: 1.从上面的地址中下载

  • Android图表库HelloChart绘制多折线图

    本文实例为大家分享了Android图表库HelloChart绘制多折线图的具体代码,供大家参考,具体内容如下 一.效果图 二.实现步骤 1.添加依赖库 compile 'com.github.lecho:hellocharts-android:v1.5.8' 2.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.a

  • extjs4图表绘制之折线图实现方法分析

    本文实例讲述了extjs4图表绘制之折线图实现方法.分享给大家供大家参考,具体如下: 本篇文章将介绍extjs中自带的图表 在本次案例中,提供一下功能: 1.从后端请求数据并运用到图表中,形成动态数据. 2.查询出每年各个月中人数. 请看下面代码: Ext.define('ChartLineTest', { extend: 'Ext.panel.Panel', autoScroll : true, selectYear:null,//定义年份 initComponent: function ()

  • python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt.plot(x,y) plt.savefig("easyplot.jpg") 结果如下: 代码解释: #x轴,y轴 x=[0,1] y=[0,1] #创建绘图对象 plt.figure() #在当前绘图对象进行绘图(两个参数是x,y轴的数据) plt.plot(x,y) #保存图象 plt

  • C# 绘制实时折线图,波形图

    此Demo是采用VS自带的Chart图表控件,制作实时动态显示的折线图,和波形图.本文仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Chart 控件,功能强大,可以绘制柱状图,折线图,波形图,饼状图,大大简化了对图的开发与定制. Chart控件的相关概念: ChartArea,表示图表区域,一个Chart可以绘制多个ChartArea,重叠在一起. Series ,表示数据序列,每个ChartArea可以有多个数据线.即,Series属于ChartArea. AxisX,AxisY,

  • 详解Flutter如何绘制曲线,折线图及波浪动效

    目录 正弦曲线绘制 波浪动效 曲线绘制 折线图 其他说明 总结 简介 上一篇用 Flutter 的 Canvas 画点有趣的图形我们介绍了使用 CustomPaint 绘制自定义形状,可以看到有了图形的平面绘制数学计算方法,我们可以画出所需的形状.本篇我们来介绍线条类图形的绘制,并且结合 Animation 实现了常见的波浪动效.通过本篇,你可以了解到: 正弦曲线的绘制 利用两条正弦曲线加上 Animation 实现波浪动效 曲线的一般绘制方法 折线图绘制 下面是最终实现的效果图,接下来我们一项

  • Python+Matplotlib实现绘制三维折线图

    目录 1.0简介 2.0三维图画法与类型 1.直线绘制(Line plots) 2.散点绘制(Scatter plots) 3.线框图(Wireframe plots) 4.三角表面图(Tri-Surface plots) 5.随机散点图 1.0简介 三维图像技术是现在国际最先进的计算机展示技术之一,任何普通电脑只需要安装一个插件,就可以在网络浏览器中呈现三维的产品,不但逼真,而且可以动态展示产品的组合过程,特别适合远程浏览. 立体图视觉上层次分明色彩鲜艳,具有很强的视觉冲击力,让观看的人驻景时

  • Python 绘制可视化折线图

    1. 用 Numpy ndarray 作为数据传入 ply import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt np.random.seed(1000) y = np.random.standard_normal(10) print "y = %s"% y x = range(len(y)) print "x=%s"% x plt.plot(y) plt.show()

  • python绘制分布折线图的示例

    用Python 绘制分布(折线)图,使用的是 plot()函数. 一个简单的例子: # encoding=utf-8 import matplotlib.pyplot as plt from pylab import * # 支持中文 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 'mentioned0cluster', names = ['mentioned1cluster','mentioned2cluster', 'mentioned3clu

随机推荐