总体上echart.js 要比chartjs 样式上好很多,从缩放,多数据显示上,显得更为优雅一些.为了省得多次学习,还是建议初学者直接echart ,省的来回学不同的chart,

1:项目中报错Cannot read property 'getAttribute' of undefined echarts.min.js:22

多半是页面内网页元素与echart加载顺序或者echart数据污染出现了问题, 不同js内同事有ehart的操作等.

2:点击不同按钮选择不同日期展示原数据出现叠加不刷新的问题

就定义一个option .

ajax 请求成功数据来之后开始绑id ,做数据填充,就是每次请求数据成功之后绑定dom id 

function getDataShow1(_num) {
        $.ajax({
            url: '/ccc/vvv/xx',
            type: 'get',
            dataType: "json",
            async: false,
            data: {
                num: _num
            },
            success: function (data1) {
                console.log(data1);

//清空原数据
if (myChart != undefined) {
myChart.dispose();// 移除容器上的 _echarts_instance
}

var myChart2 = echarts.init(document.getElementById('H_idstQr'));
                myChart2.setOption(option, true);             
                //刷新数据
                var option2 = myChart2.getOption();
                var xlist = data1.x;
                for (var i = 0; i < xlist.length; i++) {
                    option2.xAxis[0].data.push(xlist[i]); //x轴日期
                }
                var datalist = data1.datalist;
                for (var i = 0; i < datalist.length; i++) {
                    var _data = datalist[i].data;
                    if (datalist[i].name === 'xx') {
                        newColor = window.chartColors['ForestGreen'];
                    }
                    if (datalist[i].name === 'yyy') {
                        newColor = window.chartColors['ForestGreen'];
                    }
                 
                    var newserie = {
                        name: datalist[i].name,
                        type: 'line',
                        data: _data,
                        smooth: true,
                        itemStyle: {
                            normal: {
                                color: newColor
                            }
                        }
                    }
                    option2.series.push(newserie);
                }
                myChart2.setOption(option2);
            }
            , error: function (err) {
                // console.log(err.statusText);
                console.log(err + '异常');
            }
        });
    };

 3: 数据在展示下放离x轴 留有较大空间问题 下边的

min 和max 就是上下保留的距离  option 下yAxis设置
   yAxis: [
            {
                type: 'value',
                name: '温度',
                min: function (value) {
                    return value.min - 3;
                },
                max: function (value) {
                    return value.max + 3;
                },
            }
        ],
yAxis.min   |   number, string, function

[ default: null ]

坐标轴刻度最小值。

可以设置成特殊值 'dataMin',此时取数据在该轴上的最小值作为最小刻度。

不设置时会自动计算最小值保证坐标轴刻度的均匀分布。

4:去掉分部区域虚线  在option中series  内设置

    @* markArea: {
                            silent: true,
                            itemStyle: {
                                color: "transparent",
                                borderWidth: 1,
                                borderType: 'dashed'
                            },
                            data: [[{
                                name: sername+'分布区间',
                                xAxis: 'min',
                                yAxis: 'min'
                            }, {
                                xAxis: 'max',
                                yAxis: 'max'
                            }]]
                        },*@

5:去掉平均值箭头线  在option中series  内设置

  @*     markLine: {
                            lineStyle: {
                                type: 'solid'
                            },
                            data: [
                                { type: 'average', name: '平均值' },
                                { xAxis: 160 }
                            ]
                        }*@

 6:grid

 

 

grid 为直角坐标系内绘图网格,可以设置 x y x2 y2 等值。这在控制图表摆放位置上,起了重要的作用。 

如图所示,

x 为直角坐标系内绘图网格左上角横坐标,数值单位px,支持百分比(字符串),如'50%'(显示区域横向中心)

y 为左上纵坐标,x2为右下横坐标,y2为右下纵坐标。

需要设置的话,就按照tooltip 或 legend 的格式设置就行。

 

接下来就是 formatter 了。为了弥补 echarts 在时间或计量单位上格式的不足,echarts 暂时利用 formatter 来加上需要个格式,对数据呈现方式进行修改。

在设置 formatter 的时候可以用在 tooltip 和 y 轴上。

{Function},传递参数列表如下:

    • <Array> params : 数组内容同模板变量,[[a, b, c, d, e, data], [a1, b1, c1, d1, e1, data1], ...],不同的是当trigger为item时最后一项返回option中的完整data
    • <String> ticket : 异步回调标识
    • <Function> callback : 异步回调,回调时需要两个参数,第一个为前面提到的ticket,第二个为填充内容html
    • *函数回调时this指针指向当前图表实例(myChart)

https://blog.csdn.net/qq_30264689/article/details/80911974

grid: {
    left: '3%',
        right: '7%',
            bottom: '3%',
                containLabel: true
},

上边设置

 

上下左右不靠边

下边设置 在option中  内设置

grid: {
     x: 46,
        y: 30,
        x2: 32,
        y2: 40,
        borderWidth: 0
},

 

 ok了 点没显示

7:点不显示问题..后来发现是echart 版本问题

 

 8:散点图点的大小 symbolSize     在option中series  内设置

      var newserie = {
                    name: sername,
                    type: 'scatter',
                    data: dataarr,
                    color: newColor,  
                    symbolSize: 6,

 9:Uncaught TypeError: Cannot use 'in' operator to search for '_ec_inner' in undefined

很多网上说是jsonparse把 传来的值给json 一下, 最近发现c#mvc项目 请求时,在服务器端返回的json 后在前端是不需要json转换的.没碰到过需要转换的问题,在控制台抓包,转换成的数据也很正常,对象和数组都很正确.

后来发现是option的定义放在调用函数的后边了, 按照js中执行的先后顺序,先执行的方法,然后出现int初始化 chart时没有找到option 也能就出现了上边的错误.

10:这种图

 

 

 改成

 

看文档费劲啊,自己看看网上实例里边改动改动参数,就知道哪个负责哪块了

下边是负责标题在哪个位置显示的 一个left 靠左 按整个画布的四分之一的位置,头部位置没写默认top 为0吧 就是顶着上边 如果在右边中部呢

left: '75%',
top: '50%',   这些功能就是在屏幕内定位功能

 title: [{
        text: '在线构建',
        subtext: '总计 ' + builderJson.all,
        left: '25%',
        textAlign: 'center'
    }, {
        text: '各版本下载',
        subtext: '总计 ' + Object.keys(downloadJson).reduce(function (all, key) {
            return all + downloadJson[key];
        }, 0),
        left: '75%',
        textAlign: 'center'
    }],

左侧的图怎么拉下来呢

调grid  .bottom

 grid: [{
        top: 50,
        width: '50%',
        bottom: '10%',
        left: 10,
        containLabel: true
    }],

11:这种图的线的颜色以及显示平均线,还有y轴 ,见代码

 

 

 option = {
        tooltip: {
            trigger: 'axis'
        },
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        xAxis: {
            type: 'category',
            boundaryGap: false,
            splitLine: {
                show: false
            },
            axisLabel: {
                show: true,
                textStyle: {
                    color: '#a4a7ab'
                }
            },
            data: categoryDate
        },
        yAxis: {
            splitLine: {
                show: true
            },
            axisLine: { show: true },
            axisLabel: {
                show: true,
                textStyle: {
                    color: '#a4a7ab'
                }
            }
        },
        series: [
            {
                name: dayname,
                type: 'line',               
                color:'#1afbf9',
                data: daylineData,
                markLine: {
                    data: [
                        { type: 'average', name: '平均值' }
                    ]
                }
            },
            {
                name: nightname,
                type: 'line',               
                color: '#237df8',
                markLine: {
                    data: [
                        { type: 'average', name: '平均值' }
                    ]
                },
                data: nightlineData
            }
        ]
    };

 

posted on 2020-12-08 15:33  小石头的一天  阅读(1084)  评论(0编辑  收藏  举报