精华内容
下载资源
问答
  • 如何移动折线图到指定位置
    2022-06-20 10:09:03

    成果:无论折线图多大 放在什么位置 折线图可成比例缩放

    主要思路:

    1. 数据处理:
      根据数据数量以及布局宽度、坐标 计算点位x、y坐标间隔距离以及相应坐标
    2. 绘制:
      在onDraw方法内进行 需要Path、Paint的对象 path负责绘制折线,Paint负责设置颜色、形状等信息
      线的绘制:第一个点位需要使用path.moveTo() 后面用path.lineTo()去实现折线 最后使用canvas.drawPath()将其绘制出来
      点位的绘制:直接使用canvas.drawPoint()进行绘制
    package com.example.myapplication;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.DashPathEffect;
    import android.graphics.Paint;
    import android.graphics.Path;
    import android.graphics.PointF;
    import android.util.AttributeSet;
    import android.util.TypedValue;
    import android.view.View;
    
    import androidx.annotation.Nullable;
    
    import java.util.ArrayList;
    
    public class MyLineChartView extends View {
    
    
        private double[] dataList = {120.0, 130.0, 160.0, 115.0, 180.0};
        private ArrayList<PointF> xyList = new ArrayList<PointF>();
        private Paint mLinePaint = new Paint();
        private double minWeight = Integer.MAX_VALUE;
        private double maxWeight = 0;
        private Context mContext;
        private double spaceX;
        private int spaceY;
        public MyLineChartView(Context context) {
            this(context, null);
            this.mContext = context;
        }
    
        public MyLineChartView(Context context, @Nullable AttributeSet attrs) {
            this(context, attrs, 0);
            this.mContext = context;
        }
    
        public MyLineChartView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            this.mContext = context;
            int a = mContext.getResources().getDisplayMetrics().widthPixels;
            // 寻找最大值与最小值
            for (int i = 0; i< dataList.length; i++) {
                if (dataList[i] < minWeight) {
                    minWeight = dataList[i];
                }
                if (dataList[i] > maxWeight) {
                    maxWeight = dataList[i];
                }
            }
    
            //折线画笔
            mLinePaint.setColor(Color.RED);
            mLinePaint.setStrokeWidth(dp2px(5));
            mLinePaint.setStyle(Paint.Style.STROKE);
            mLinePaint.setAntiAlias(true);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            calculationData(getLeft(), getTop(), getRight(), getBottom());
            int a = getWidth();
            Path path = new Path();
            Paint paint= new Paint();
            paint.setAntiAlias(true);//去锯齿
            paint.setColor(Color.BLACK);//颜色
            paint.setStrokeCap(Paint.Cap.ROUND);
            paint.setStrokeWidth(40);
            for (int i = 0; i < dataList.length; i++) {
                if (i == 0) {
                    path.moveTo(xyList.get(i).x, xyList.get(i).y);
                } else {
                    path.lineTo(xyList.get(i).x, xyList.get(i).y);
                }
            }
            canvas.drawPath(path, mLinePaint);//折线
            for (int i = 0; i < dataList.length; i++) {
                canvas.drawPoint(xyList.get(i).x, xyList.get(i).y, paint);
            }
        }
    
        protected float dp2px(float v) {
            return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, v, getResources().getDisplayMetrics());
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    
        @Override
        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
            super.onLayout(changed, left, top, right, bottom);
        }
    
        private void calculationData(int left, int top, int right, int bottom) {
            spaceX = (right - left) / (dataList.length + 1);
            spaceY = (bottom - top) / 6;
            // 设定xy坐标
            for (int i = 0; i< dataList.length; i++) {
                PointF pointF = new PointF((int) (spaceX * ( i + 1 )), (int) ((1 - ((dataList[i] - minWeight)
                        / (maxWeight - minWeight))) * (bottom - top )) );
                xyList.add(pointF);
            }
        }
    
    }
    
    更多相关内容
  • 记录折线图的一些基本设置: ...5.折线图距离上下左右的位置、折线的弧度、去掉折线节点的小圆点 6.鼠标滚轮滚动放大缩小 7.鼠标移入显示信息 8.图形切换工具 完整代码如下:(注意显示导入echarts.js) ...

    记录折线图的一些基本设置:

    1.折线图背景颜色

    2.标题字颜色、大小,小标题字颜色、大小

    3.xy轴颜色、xy轴字旋转、去掉x轴网格、去掉xy轴网格线、xy轴坐标线的宽度、颜色

    4.legend颜色

    5.折线图距离上下左右的位置、折线的弧度、去掉折线节点的小圆点

    6.鼠标滚轮滚动放大缩小

    7.鼠标移入显示信息

    8.图形切换工具

    完整代码如下:(注意显示导入echarts.js)

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <!-- 引入 ECharts 文件 -->
        <script src="echarts.js"></script>
        <script type="text/javascript">
           window.onload=function () {
               // 基于准备好的dom,初始化echarts实例
               var myChart = echarts.init(document.getElementById('main'));
               // 指定图表的配置项和数据
               var option = {
                   backgroundColor:'bisque', //设置图标的背景颜色
                   title: {
                       text: '在校学生人数',
                       subtext: '最新统计表', //小标题
                       subtextStyle: {  //小标题颜色
                           color: '#ff4536'
                       },
                       textStyle: {   //标题颜色
                           color: '#380c3c'
                       }
                   },
                   xAxis: {
                       type: 'category',
                       splitLine:{show: false},//去除x轴网格线
                       splitArea : {show : false},//去掉网格区域
                       axisLine: {  //设置x轴坐标线的样式
                           lineStyle: {
                               type: 'solid',
                               color: '#161616',//x轴坐标线的颜色
                               width:'1'//x轴坐标线的宽度
                           }
                       },
                       axisLabel: {  //x轴刻度数值颜色
                           rotate: 10, //旋转x轴的文字
                           interval:0, //x轴每个项的距离  修改数据显示的个数
                           textStyle: {
                               color: '#1b1b1b'
                           }
                       },
                       data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月']  //x轴数据项
                   },
                   yAxis: {
                       type: 'value',
                       splitArea : {show : false},//去掉网格区域
                       axisLine: {  //设置y轴坐标线的样式
                           lineStyle: {
                               type: 'solid',
                               color: '#161616',//y轴坐标线的颜色
                               width:'1'//y轴坐标线的宽度
                           }
                       },
                       axisLabel: {  //y轴刻度数值颜色
                           rotate: 10, //旋转y轴的文字
                           interval:0, //y轴每个项的距离  修改数据显示的个数
                           textStyle: {
                               color: '#1b1b1b'
                           }
                       },
                   },
                   toolbox: {  //图形切换工具
                        show : true,
                        feature : {
                            dataView : {show: true, readOnly: false},
                            magicType : {show: true, type: ['line', 'bar']},
                            restore : {show: true},
                            saveAsImage : {show: true}
                        }
                   },
                   legend: {
                       data:['学校A','学校B']  //这里的值对应series的name
                   },
                   color:['#ffa414','#30903f'],  //设置legend颜色
                   grid: {  //设置图标距离上下左右的距离 top一般默认
                       left: '3%',
                       right: '4%',
                       bottom: '3%',
                       containLabel: true
                   },
                   dataZoom: [  //放大缩小
                       {
                           type: 'inside'
                       }
                   ],
                   tooltip: { //鼠标移动到折线上 显示信息
                       trigger: 'axis'
                   },
                   series: [  //显示的折线个量
                       {
                           name:'学校A',
                           type:'line',
                           symbol:'none',  //去掉折线图每个节点的小圆点
                           smooth:'0.2',  //设置折线图的弧度 值:0-1之间
                           stack: '学校a在校人数',
                           lineStyle:{  //设置折线颜色
                                normal:{
                                    color:'#ffa414',
                                    width:3
                                }
                           },
                           data: [950, 610, 1050, 625, 502, 336, 340]
                       },
                       {
                           name:'学校B',
                           type:'line',
                           stack: '学校b在校人数',  //这里名字不要一样
                           lineStyle:{
                               normal:{
                                   color:'#30903f',
                                   width:3
                               }
                           },
                           data:[750, 210, 130, 450, 520, 620, 940]
                       },
    
                   ]
               };
               var zoomSize = 90;  //放大缩小
               myChart.on('click', function (params) {
                   console.log(name[Math.max(params.dataIndex - zoomSize / 2, 0)]);
                   myChart.dispatchAction({
                       type: 'dataZoom',
                   });
               });
               // 使用刚指定的配置项和数据显示图表。
               myChart.setOption(option);
           }
        </script>
    </head>
    <body>
    
    <div id="main" style="width: 600px;height:400px;margin: 100px auto"></div>
    
    </body>
    </html>

     

     

    展开全文
  • Python matplotlib绘制折线图

    万次阅读 多人点赞 2020-11-01 22:10:31
    Python matplotlib绘制折线图

    Python matplotlib绘制折线图

    matplotlib是Python中的一个第三方库。主要用于开发2D图表,以渐进式、交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力。

    一、安装matplotlib

    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

    二、matplotlib图像简介

    matplotlib的图像分为三层,容器层、辅助显示层和图像层。

    1. 容器层主要由Canvas、Figure、Axes组成。

    Canvas位于图像的最底层,充当画布的作用。

    Figure位于Canvas之上,指画布上的一整张图像。

    Axes位于Figure之上,指Figure中的单个图表,一个Figure中可以有一个或多个Axes,即一张图像中可以有一个或多个图表。

    2. 辅助显示层是单个图表(Axes)中用来提供辅助信息的层。

    辅助显示层主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。

    辅助层可使图像显示更加直观,提高可读性。

    3. 图像层指Axes内通过plot、scatter、bar、histogram、pie等函数绘制出的图形。

    三、matplotlib绘制折线图

    # coding=utf-8
    import matplotlib.pyplot as plt
    
    
    plt.figure(figsize=(20, 10), dpi=100)
    game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
            '3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']
    scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
    plt.plot(game, scores)
    plt.show()

    运行结果:

    figure(): 创建图像并设置图像的大小等属性,返回一张图像,可以传入很多参数,常用参数有两个。figsize参数传入一个元组(width, height),设置图像的大小。dpi传入一个整数值,设置图像的清晰度。

    plot(): matplotlib中绘制折线图的函数。可以传入很多参数,一般传入两个列表,分别是折线图中的x值和y值。上面的例子中用了NBA2020年季后赛James的得分数据。

    show(): 展示图像。

    在上面的图表中,x坐标值中有中文,首次使用matplotlib绘图时中文无法正常显示。要解决中文显示问题,需要下载安装SimHei字体,下载链接:https://www.zitijia.com/i/281258939050380345.html,或直接搜索SimHei然后找一个正确的网站下载。下载完成后,在Windows下直接解压双击安装。安装完成后删除~/.matplotlib中的缓存文件,并创建配置文件matplotlibrc,将matplotlibrc中的内容设置为如下内容。

    font.family         : sans-serif
    font.sans-serif     : SimHei
    axes.unicode_minus  : False

    操作命令如下截图,完成后图像中就可以正常显示中文了。

    使用上面的代码,已经实现了简单的折线图,但展示的效果很差,所以需要进行优化,使图像展示得更好。

    四、matplotlib优化折线图

    import matplotlib.pyplot as plt
    
    
    plt.figure(figsize=(20, 10), dpi=100)
    game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
            '3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']
    scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
    plt.plot(game, scores, c='red')
    plt.scatter(game, scores, c='red')
    y_ticks = range(50)
    plt.yticks(y_ticks[::5])
    plt.grid(True, linestyle='--', alpha=0.5)
    plt.xlabel("赛程", fontdict={'size': 16})
    plt.ylabel("得分", fontdict={'size': 16})
    plt.title("NBA2020季后赛詹姆斯得分", fontdict={'size': 20})
    plt.show()

    运行结果:

    在使用plot()函数绘图时,可以通过c='颜色'来设置折线图的颜色。

    scatter(): 绘制散点图。折线图是用直线连接相邻的两个点形成的,但是连成折线后点的显示不明显。scatter可以单独对点进行设置,展示得更明显。

    yticks(): 用于设置y轴坐标的范围,传入一个可迭代对象(如range()函数)。最开始绘制的折线图中,图像的y轴坐标范围是数据的范围,坐标原点不是0,使用yticks函数可以设置想要的坐标范围。同理xticks可以用于设置x轴坐标的范围。

    grid(): 用于设置图表中的网格线,使用linestyle参数设置网格线的样式,常用的样式有下表中的几种,plot()函数中也可以用linestyle参数设置折线图的样式。使用alpha参数设置网格线的透明度。

    样式字符
    实线
    虚线- - 
    点划线-.
    点虚线

    xlabel(): 用于设置x轴的标签,说明x轴坐标的含义,第一个参数传入需要设置的标签值,后面可以通过其他参数设置显示的效果,如字体大小等。ylabel同理。

    title(): 用于设置折线图的标题,说明这张折线图展示的数据。用法同xlabel。

    五、matplotlib绘制多条折线图

    import matplotlib.pyplot as plt
    
    
    plt.figure(figsize=(20, 10), dpi=100)
    game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
            '3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']
    scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
    rebounds = [17, 6, 12, 6, 10, 8, 11, 7, 15, 11, 6, 11, 10, 9, 16, 13, 9, 10, 12, 13, 14]
    assists = [16, 7, 8, 10, 10, 7, 9, 5, 9, 7, 12, 4, 11, 8, 10, 9, 9, 8, 8, 7, 10]
    plt.plot(game, scores, c='red', label="得分")
    plt.plot(game, rebounds, c='green', linestyle='--', label="篮板")
    plt.plot(game, assists, c='blue', linestyle='-.', label="助攻")
    plt.scatter(game, scores, c='red')
    plt.scatter(game, rebounds, c='green')
    plt.scatter(game, assists, c='blue')
    plt.legend(loc='best')
    plt.yticks(range(0, 50, 5))
    plt.grid(True, linestyle='--', alpha=0.5)
    plt.xlabel("赛程", fontdict={'size': 16})
    plt.ylabel("数据", fontdict={'size': 16})
    plt.title("NBA2020季后赛詹姆斯数据", fontdict={'size': 20})
    plt.show()

    运行结果:

    要在同一张图像中展示多条折线图,多次调用plot()函数就行。每条折线图的颜色、样式等可以分别设置,以便更好地进行区分。

    legend(): 展示图例,通过loc参数传入图例在图表中展示的位置,可以传入的值有‘best’, 'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'upper center', 'center',这十一个值分别对应数字0~10,传值时也可以传对应的数字,后面十个值都指定了图例的位置,'best'表示自适应,会自动根据图像的分布在后面的十个值中选择一个,大部分为右上角'upper right'。

    为了使用图例,在每次调用plot()函数绘制折线图时,需要使用label参数给折线图添加标签,在图例中展示。有多条折线图时,图例可以用于区分每条折线图表示的含义,如将James的得分和篮板、助攻展示在同一张图中。

    六、matplotlib绘制多张折线图

    import matplotlib.pyplot as plt
    
    
    fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(20, 6), dpi=100)
    game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
            '3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']
    scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
    rebounds = [17, 6, 12, 6, 10, 8, 11, 7, 15, 11, 6, 11, 10, 9, 16, 13, 9, 10, 12, 13, 14]
    assists = [16, 7, 8, 10, 10, 7, 9, 5, 9, 7, 12, 4, 11, 8, 10, 9, 9, 8, 8, 7, 10]
    y_data = [scores, rebounds, assists]
    colors = ['red', 'green', 'blue']
    line_style = ['-', '--', '-.']
    y_labels = ["得分", "篮板", "助攻"]
    for i in range(3):
        axs[i].plot(game, y_data[i], c=colors[i], label=y_labels[i], linestyle=line_style[i])
        axs[i].scatter(game, y_data[i], c=colors[i])
        axs[i].legend(loc='best')
        axs[i].set_yticks(range(0, 50, 5))
        axs[i].grid(True, linestyle='--', alpha=0.5)
        axs[i].set_xlabel("赛程", fontdict={'size': 16})
        axs[i].set_ylabel(y_labels[i], fontdict={'size': 16}, rotation=0)
        axs[i].set_title("NBA2020季后赛詹姆斯{}".format(y_labels[i]), fontdict={'size': 20})
    fig.autofmt_xdate()
    plt.show()

    运行结果:

    subplots(): 用于在同一张图像中绘制多张图表,通过nrows, ncols两个参数设置图表的张数和排列方式,figsize和dpi同figure()函数。subplots()函数返回两个参数,一个是图像对象fig,一个是可迭代的图表数组axs(类型为numpy中的数组对象)。

    每一张图表中的标签、标题、样式、图例等都需要单独设置,为了避免代码过于冗余,可以使用循环。绘制每一张图表时,从axs中取出每一张图表,再调用plot()函数绘图。在设置坐标轴、标签、标题时,使用'set_'开头的方法进行设置,如设置x轴标签用set_xlabel()。

    autofmt_xdate(): x轴坐标值自适应倾斜。因为一张图像中有多张图表,x坐标值靠得很近,可能会因重叠造成展示效果差,使用fig对象的autofmt_xdate()方法可以设置自适应倾斜。

    以上就是matplotlib实现折线图的简单介绍,更多设置可以参考官网https://matplotlib.org/tutorials/index.html,并多作尝试。

     

     

    展开全文
  • echarts折线图使用

    2022-07-21 17:00:18
    echarts折线图的使用

    [@TOC]

    0.效果,点击数据信息实现弹窗

    在这里插入图片描述

    在这里插入图片描述

    1.引入css

    <script language="javascript" src="https://cdn.staticfile.org/echarts/4.7.0/echarts.min.js"></script>
    

    2.准备一个DOM

    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
     <div id="lineChart" style="width: 100%;height:90%;"></div>
    

    3.编写js

    3.1 准备数组,存放x轴和待显示的折线

    var txs = new Array(); //x轴
    var series1 = new Array();
    var series2 = new Array();
    var series3 = new Array();
    

    3.2 给数组赋值

    <%
    	long sj_date = LongCalendar.getLongCalendar();
        	for(int i = 0; i<listSJC.size(); i++){
        	    Map map = (Map)  listSJC.get(i);
    			String x = (String)map.get("SJ_HH");
    			String max_sjc = (String)map.get("MAX_SJC");
    			String min_sjc = (String)map.get("MIN_SJC");
    			String avg_sjc = (String)map.get("AVG_SJC");
        	%>
        	    
    			txs[<%=i%>] = "<%=x%>";    //类别数组(实际用来盛放X轴坐标值)    
    			series1[<%=i%>] = <%=max_sjc%>;
    			series2[<%=i%>] = <%=min_sjc%>;
    			series3[<%=i%>] = <%=avg_sjc%>;
        	<%
        	}
        	%>
        
    

    3.3 基于准备好的dom,初始化echarts实例

    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('lineChart'));
    // 指定图表的配置项和数据
    myChart.setOption ({
        title: {
            text: '响应统计'  //图标的名字
        },
        tooltip: {
            trigger: 'axis'
        },
        legend: {
            data:['最大值','最小值','平均值']  //三条折线的名字
        },
        toolbox: {  
            show: true,  //是否显示右上角的视图转换
            feature: {
                mark: { show: true },
                dataView: { show: true, readOnly: false },
                magicType: { show: true, type: ['line', 'bar'] },  //line 折线图;bar 柱状图
                restore: { show: true }  //还原初始的视图类型
            }
        },
        calculable: true,
        xAxis: {
            type: 'category',
            boundaryGap: false, //取消左侧的间距
            data: txs  //x轴数据
        },
        yAxis: {
            type: 'value',
            name: ''
        },
        series: [{
            name: '最大值',  //跟上面折线图的名字相同
            type: 'line',
            symbol: 'emptycircle',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
            data: series1
    
        },
                 {
                     name: '最小值',
                     type: 'line',
                     symbol: 'emptyrect',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
                     data: series2
                 },
                 {
                     name: '平均值',
                     type: 'line',
                     symbol: 'emptydiamond',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
                     data: series3
                 }]
    });
    
    //myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画
    
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption({
        xAxis: {
            data: txs 
        },
        series: [{                    
            data: series1  //最大值
        },
                 {
                     data: series2 //最小值
                 },
                 {
                     data: series3 //平均值
                 }]
    });
    

    3.4 点击数据触发事件

    //点击数据触发事件
    myChart.on('click', function(params){
        var sj_HH = params.name;  //x轴值
        var sj_date = <%=jssj%>;
        openDialog({
            url:"<%= application.getAttribute("MISRoot")%>/HTTPController?RequestID=<%=secretCoder.encodeStr("DF_SSGL_MRDZ_listFzxx")%>"+"&HH="+sj_HH+"&date="+sj_date,
            title:"数据详细信息",
            width:"90%",
            height:"80%"
     }); 
    

    3.5 代码整合

    <script type="text/javascript">
        	var txs = new Array(); //x轴
        	var series1 = new Array();
    	    var series2 = new Array();
    	    var series3 = new Array();
        	
        	<%
    	long sj_date = LongCalendar.getLongCalendar();
        	for(int i = 0; i<listSJC.size(); i++){
        	    Map map = (Map)  listSJC.get(i);
    			String x = (String)map.get("SJ_HH");
    			String max_sjc = (String)map.get("MAX_SJC");
    			String min_sjc = (String)map.get("MIN_SJC");
    			String avg_sjc = (String)map.get("AVG_SJC");
        	%>
        	    
    			txs[<%=i%>] = "<%=x%>";    //类别数组(实际用来盛放X轴坐标值)    
    			series1[<%=i%>] = <%=max_sjc%>;
    			series2[<%=i%>] = <%=min_sjc%>;
    			series3[<%=i%>] = <%=avg_sjc%>;
        	<%
        	}
        	%>
        
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('lineChart'));
            // 指定图表的配置项和数据
            myChart.setOption ({
                title: {
                    text: '响应统计'
                },
                tooltip: {
    				trigger: 'axis'
    			},
                legend: {
                    data:['最大值','最小值','平均值']
                },
    		    toolbox: {
    				show: true,
    				feature: {
    					mark: { show: true },
    					dataView: { show: true, readOnly: false },
    					magicType: { show: true, type: ['line', 'bar'] },
    					restore: { show: true }
    				}
    			},
    			calculable: true,
                xAxis: {
    				type: 'category',
    				boundaryGap: false, //取消左侧的间距
                    data: txs
                },
                yAxis: {
    				type: 'value',
    				name: ''
    			},
                series: [{
                    name: '最大值',
                    type: 'line',
    				symbol: 'emptycircle',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
    				data: series1
                    
                },
    			{
                    name: '最小值',
                    type: 'line',
                    symbol: 'emptyrect',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
    				data: series2
                },
    			{
                    name: '平均值',
                    type: 'line',
                    symbol: 'emptydiamond',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
    				data: series3
                }]
            });
    		
    	//myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画
    		
     
            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption({
    		       xAxis: {
                        data: txs
                    },
                    series: [{                    
                        data: series1
                    },
                    {
                        data: series2
                    },
                    {
                        data: series3
                    }]
    		});
    		//点击数据触发事件
    		myChart.on('click', function(params){
    			var sj_HH = params.name;  //x轴值
    			var sj_date = <%=jssj%>;
    			openDialog({
    				url:"<%= application.getAttribute("MISRoot")%>/HTTPController?RequestID=<%=secretCoder.encodeStr("DF_SSGL_MRDZ_listFzxx")%>"+"&HH="+sj_HH+"&date="+sj_date,
    				title:"数据详细信息",
    				width:"90%",
    				height:"80%"
    	        }); 
    			
    		})
        </script>
    
    展开全文
  • 本文首发:《Echarts 折线图完全配置指南》 Echarts 折线图是图表中最常用的显示形式之一。使用 Echarts 做出基本的折线图很简单,但要是想把多组数据放在一张图表中,展示的漂亮又直观就不容易了。本文将带领大家从...
  • 本笔记记录时间:2022-02-19 12:18:42,估计发布网上是一个月后了。 效果如下: 对应Echart代码如下: <script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 let fundChart = ...
  • matplotlib折线图

    2021-10-31 19:11:27
    Figure和Subplot matplotlib的图像都位于Figure...'data':移动轴的位置到交叉轴的指定坐标 ax.spines['bottom'].set_position(('data', 0)) ax.spines['left'].set_position(('data', 0)) plt.plot(x, y) plt.show()
  • 使用LiveCharts完成一个指定X和Y坐标的线形图形界面,通过指定X和Y可以减少无关或者平滑数据的展示,比如X在1100时数据都是不变的,可以直接指定101的数据可直观展示0101的线性情况。
  • Pyecharts之折线图与柱状图组合绘制

    千次阅读 2021-02-27 09:32:13
    绘制折线图 #绘制 line_ensur=Line() 1、 绘制 确诊数折线图 #添加横轴 line_ensur.add_xaxis(x_data) #添加纵轴 line_ensur.add_yaxis(series_name='确诊数', y_axis=ensue_num, color='#4b0101', label_opts=opts....
  • 自定义Echarts折线图中悬浮框的位置

    千次阅读 2018-08-31 17:48:28
    在Echarts3的折线图的使用过程中,想使初始化出来的图表更人性化,就比如说有这么个需求,在Echarts折线图中,鼠标悬浮在左侧某一个点时,悬浮框悬停在点的右侧;鼠标悬停在右侧某一个点时,悬浮框悬停在点的左侧。 ...
  • 如果为 false,而 [series.emphasis.label.show](() 为 true,则表示只有在鼠标移动到该数据时,才显示数值。 option = { xAxis: { data: [“a”, “b”, “c”, “d”, “e”, “f”], }, yAxis: {}, series: { ...
  • ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9...接下来将为大家介绍如何使用echarts制作饼状,案例的全过程:从echarts文件下载最终页面...
  • 柱状图 基础 普通柱状图 堆叠柱状图 ...折线图 基础 BUG 笛卡尔坐标系中的折线图 空数据 堆叠折线图 本文贡献者 样式 折线的样式 数据点的样式 数据显示 饼图 基础 半径 不显示饼图 玫瑰图 圆环图...
  • 但同时我们又不得不学会的 那就是————「折线图」。读完本篇文章你可以学什么 js实现直线方程折线图的表达canvas 的一些小技巧 直线折线图 我们先去非常有名的Echarts 官网看一看,他的折线图是什么样子的?如...
  • 折线图可以滑动
  • 第一次发文章,主要是今天同事提个需求,说一个比较复杂的折线图(大概有10几条线)的线图,tooltip显示的太多,没有办法找到当前要看的线条的数据。我查了echarts的文档只是说把trigger设置为’item‘后才可以自定义...
  • 在vue项目中使用echarts完成一个简单的折线图,使用markPoint凸显当前选中的数据,并自定义部分样式。
  • 图像结构和三层结构 图像结构 三层结构 图像层 正式绘图(直方图、折线图、散点图、饼状图) 辅助显示层 用户可以设置添加标题、网格、图例等对图形的描述信息 容器层主要由 Canvas、Figure、Axes 组成。 Canvas 是...
  • 本文为 Marno 翻译,转载必须保留出处!公众号【 Marno 】,关注后回复 RN 加入交流群React...本文将会教你如何只用 Component 和 StyleSheet 在 React Native 中制作一个折线图。我们参考的是 《 Let’s drawing ch...
  • Echars 折线图 自动向右平移显示数据(数据量大的时候适应)</title> </head> <body> <!-- Dom容器 --> <div id="myCharts" style="width: 600px;height:400px;">.
  • echarts 双Y轴折线图

    2022-07-21 08:53:51
    代码】echarts双Y轴折线图
  • C# Winfrom Chart 图表控件 柱状图、折线图

    千次阅读 多人点赞 2022-06-29 08:39:20
    新建一个.NET Framework 类型的 Winfrom 项目,在数据里面找到 Chart 控件,拖入界面中如下: 此时,默认的有一个图表的样式,实际运行却什么都没有 修改图表样式在Series这里,点击集合后面三个点 这里可以修改...
  • echarts折线图流动特效的实现(非平滑曲线)
  • iOS 折线图,柱状图

    2019-01-30 19:43:17
    在网上看了许多大家写的折线图,柱状图,有两种 如果只是简单的运用,可以自己用动画写一个 github地址 在网上看了许多大家写的折线图,柱状图,有两种 要点有: UIBezierPath用于定义一个直线/曲线组合而成的...
  • Qt自定义折线图控件

    千次阅读 热门讨论 2018-10-15 11:34:43
    目录 基础效果图 前言 设计要点 ...使用Qt自定义折线图,可以自己控制折线图的重绘规则,究竟是每添加一个数据就刷新整个折线图,还是只刷新部分折线图。 我把折线图分为以下两类: 坐标系是静...
  • 在这本有关使用Chart.js进行数据设计的课程的视频教程中,您将通过使用Chart.js框架在网格上绘制一系列点来创建简单的折线图。 完成此操作后,我们将观察Chart.js框架为您完成其余的繁重工作。 您可以在此处找到源...
  • 封面图片:《Python程序设计基础(第2版)》,ISBN:9787302490562,董付国,清华大学出版社图书详情:===============问题描述:动态绘制折线图。参考代码:运...
  • import matplotlib from matplotlib import pyplot as plt import random #导入数据 x = range(0,12) y = [random.randint(-10,30) for i in range...plt.figure(figsize = (10,8),#指定画布宽和高,单位为英寸 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,590
精华内容 2,636
热门标签
关键字:

如何移动折线图到指定位置