Multi Model Comparsion

描述:当前是关于Echarts图表中的 折线图 示例。
 
            cutoffs = ['0.00',
    '0.01',
    '0.02',
    '0.03',
    '0.04',
    '0.05',
    '0.06',
    '0.07',
    '0.08',
    '0.09',
    '0.10',
    '0.11',
    '0.12',
    '0.13',
    '0.14',
    '0.15',
    '0.16',
    '0.17',
    '0.18',
    '0.19',
    '0.20',
    '0.21',
    '0.22',
    '0.23',
    '0.24',
    '0.25',
    '0.26',
    '0.27',
    '0.28',
    '0.29',
    '0.30',
    '0.31',
    '0.32',
    '0.33',
    '0.34',
    '0.35',
    '0.36',
    '0.37',
    '0.38',
    '0.39',
    '0.40',
    '0.41',
    '0.42',
    '0.43',
    '0.44',
    '0.45',
    '0.46',
    '0.47',
    '0.48',
    '0.49',
    '0.50',
    '0.51',
    '0.52',
    '0.53',
    '0.54',
    '0.55',
    '0.56',
    '0.57',
    '0.58',
    '0.59',
    '0.60',
    '0.61',
    '0.62',
    '0.63',
    '0.64',
    '0.65',
    '0.66',
    '0.67',
    '0.68',
    '0.69',
    '0.70',
    '0.71',
    '0.72',
    '0.73',
    '0.74',
    '0.75',
    '0.76',
    '0.77',
    '0.78',
    '0.79',
    '0.80',
    '0.81',
    '0.82',
    '0.83',
    '0.84',
    '0.85',
    '0.86',
    '0.87',
    '0.88',
    '0.89',
    '0.90',
    '0.91',
    '0.92',
    '0.93',
    '0.94',
    '0.95',
    '0.96',
    '0.97',
    '0.98',
    '0.99',
    '1.00'
];

ft = [
    [1.0, 1.0],
    [0.98, 1.0],
    [0.95, 1.0],
    [0.89, 1.0],
    [0.84, 0.99],
    [0.78, 0.99],
    [0.74, 0.98],
    [0.7, 0.96],
    [0.67, 0.95],
    [0.64, 0.94],
    [0.61, 0.93],
    [0.59, 0.92],
    [0.56, 0.92],
    [0.53, 0.91],
    [0.51, 0.91],
    [0.5, 0.9],
    [0.47, 0.89],
    [0.44, 0.88],
    [0.42, 0.87],
    [0.41, 0.86],
    [0.39, 0.86],
    [0.37, 0.85],
    [0.36, 0.83],
    [0.35, 0.82],
    [0.33, 0.8],
    [0.31, 0.78],
    [0.3, 0.78],
    [0.29, 0.76],
    [0.28, 0.75],
    [0.26, 0.73],
    [0.25, 0.73],
    [0.24, 0.7],
    [0.22, 0.69],
    [0.21, 0.67],
    [0.2, 0.66],
    [0.19, 0.65],
    [0.18, 0.65],
    [0.18, 0.64],
    [0.17, 0.63],
    [0.16, 0.6],
    [0.14, 0.58],
    [0.14, 0.58],
    [0.14, 0.57],
    [0.13, 0.55],
    [0.13, 0.55],
    [0.12, 0.54],
    [0.11, 0.52],
    [0.1, 0.5],
    [0.1, 0.49],
    [0.09, 0.48],
    [0.09, 0.47],
    [0.09, 0.46],
    [0.08, 0.45],
    [0.08, 0.44],
    [0.07, 0.42],
    [0.07, 0.39],
    [0.06, 0.38],
    [0.05, 0.37],
    [0.05, 0.34],
    [0.05, 0.32],
    [0.04, 0.31],
    [0.04, 0.31],
    [0.04, 0.31],
    [0.04, 0.28],
    [0.04, 0.27],
    [0.04, 0.23],
    [0.03, 0.22],
    [0.03, 0.2],
    [0.03, 0.19],
    [0.03, 0.18],
    [0.02, 0.16],
    [0.02, 0.14],
    [0.02, 0.13],
    [0.02, 0.12],
    [0.02, 0.1],
    [0.02, 0.08],
    [0.01, 0.07],
    [0.01, 0.05],
    [0.01, 0.05],
    [0.01, 0.04],
    [0.01, 0.04],
    [0.0, 0.02],
    [0.0, 0.01],
    [0.0, 0.01],
    [0.0, 0.01],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0]
];
ft_c5 = [
    [1.0, 1.0],
    [1.0, 1.0],
    [1.0, 1.0],
    [1.0, 1.0],
    [1.0, 1.0],
    [1.0, 1.0],
    [1.0, 1.0],
    [0.98, 1.0],
    [0.97, 1.0],
    [0.49, 0.89],
    [0.48, 0.89],
    [0.48, 0.89],
    [0.46, 0.89],
    [0.46, 0.89],
    [0.46, 0.89],
    [0.46, 0.89],
    [0.28, 0.8],
    [0.22, 0.78],
    [0.22, 0.78],
    [0.22, 0.78],
    [0.21, 0.78],
    [0.12, 0.72],
    [0.12, 0.72],
    [0.11, 0.71],
    [0.11, 0.71],
    [0.1, 0.71],
    [0.1, 0.71],
    [0.1, 0.71],
    [0.1, 0.71],
    [0.1, 0.71],
    [0.09, 0.7],
    [0.09, 0.7],
    [0.09, 0.7],
    [0.09, 0.7],
    [0.08, 0.69],
    [0.08, 0.69],
    [0.08, 0.69],
    [0.08, 0.69],
    [0.07, 0.68],
    [0.07, 0.68],
    [0.07, 0.68],
    [0.07, 0.68],
    [0.07, 0.68],
    [0.07, 0.68],
    [0.07, 0.68],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.06, 0.67],
    [0.05, 0.62],
    [0.05, 0.62],
    [0.05, 0.62],
    [0.05, 0.62],
    [0.05, 0.62],
    [0.05, 0.6],
    [0.05, 0.6],
    [0.05, 0.6],
    [0.05, 0.6],
    [0.04, 0.58],
    [0.04, 0.58],
    [0.04, 0.58],
    [0.03, 0.53],
    [0.03, 0.53],
    [0.03, 0.53],
    [0.03, 0.5],
    [0.03, 0.5],
    [0.03, 0.49],
    [0.02, 0.36],
    [0.02, 0.36],
    [0.02, 0.36],
    [0.02, 0.36],
    [0.02, 0.33],
    [0.02, 0.33],
    [0.02, 0.33],
    [0.02, 0.28],
    [0.0, 0.02],
    [0.0, 0.02],
    [0.0, 0.02],
    [0.0, 0.02],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0]
];
// 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
option = {
    visualMap: {
        type: 'continuous',
        min: 0,
        max: 1,
        precision: 2,
        text: ['1.0', 'cutoff:  0.0'],
        realtime: false,
        calculable: false,
        // color: ['orangered','yellow','lightskyblue'],
        orient: 'horizontal',
        show: true,
        itemHeight: '900%',
        left: '10%',
        hoverLink: true,
        textStyle: {
            fontWeight: 'normal',
            fontSize: 16,
            color: '#F1F1F3'
        },
        dimension: 2,
        // seriesIndex:1,
        formatter: function(value) {
            console.log('here');
            index = Math.round(value * 100)
            cutoff = Math.round(value * 100) / 100;
            fpr = ft[index][0];
            tpr = ft[index][1];
            ft_new = ft.slice();
            
            fpr_c5 = ft_c5[index][0];
            tpr_c5 = ft_c5[index][1];
            ft_new_c5 = ft_c5.slice();
            var cut = {
                'value': [fpr, tpr],
                'symbolSize': 10
            };
            
             var cut_c5 = {
                'value': [fpr_c5, tpr_c5],
                'symbolSize': 10
            };
            
            ft_new[index] = cut;
            ft_new_c5[index] = cut_c5;
            myChart.setOption({
                title: {
                    subtext: '                  cutoff: ' + cutoff + "\n" +
                        "                      Log  " + "     " + "C5" + "\n" +
                        "          fpr    " + "    " + ft[index][0] + "    " + ft_c5[index][0] +"\n" +
                        "          tpr    " + "    " + ft[index][1] + "    " + ft_c5[index][1],
                    subtextStyle: {
                        fontSize: 16
                    }
                },
                series: [{
                    name: "Log",
                    data: ft_new,
                },{
                    name: "C5",
                    data: ft_new_c5,
                }]
            });



            // console.log('selectDataRange end');
            return "Cutoff" + ":" + cutoff;
        },

    },
    backgroundColor: '#394056',
    title: {
        // text: "Cutoff:" + cutoff + "<br/>" + "fpr: " + 0,
        //         textAlign: 'center',
        //         left: '63%',
        //         top: '55%',
        //         textStyle: {
        //             fontSize: 10,
        //             color: 'rgba(255, 255, 255, 0.7)'
        //         }
        text: 'Multi Binary Classification Model ROC Comparsion',
        textStyle: {
            fontWeight: 'normal',
            fontSize: 16,
            color: '#F1F1F3',
        },
        left: '63%',
        top: '55%'
    },
    tooltip: {
        trigger: 'axis',
        // show: true,
        // alwaysShowContent: true,
        // text: 'here',
        triggerOn: 'none',
        // position: ['63%', '55%'],

        formatter: function(params) {
            index = params[0].dataIndex;
            console.log("tooltip %d", index);

            return "Cutoff:   " + ":" + datas[index][0] +
                "<br/>" + "fpr  " + ":" + ft[index][0] +
                "<br/>" + "tpr" + ":" + ft[index][1];

            // return "Cutoff   " + ":" + datas[index][0] +
            //     "<br/>" + "fpr  " + ":" + ft[index][0] +
            //     "<br/>" + "tpr" + ":" + ft[index][1] +
            //     "<br/>" + "Recall   " + ":" + datas[index][5] +
            //     "<br/>" + "Accuracy " + ":" + datas[index][6];
        },
        axisPointer: {
            lineStyle: {
                color: '#57617B'
            }
        },

    },
    legend: {
        icon: 'rect',
        itemWidth: 20,
        itemHeight: 10,
        itemGap: 13,
        data: ['Log', 'C5'],
        right: '4%',
        textStyle: {
            fontSize: 12,
            color: '#F1F1F3'
        },
    },
    grid: {
        // top: 80,
        // bottom: 100,
        left: '3%',
        right: '4%',
        bottom: '10%',
        // containLabel: true
    },
    xAxis: [{
        type: 'value',
        name: 'FPR',
        nameTextStyle: {
            fontSize: 14,
            color: '#F1F1F3'
        },
        show: true,
        min: 0,
        max: 1,
        axisTick: {
            show: false
        },
        axisLine: {
            lineStyle: {
                 color: '#57617B'
            }
        },
        axisLabel: {
            margin: 10,
            textStyle: {
                fontSize: 14,
                color: '#F1F1F3'
            }
        },
        splitLine: {
            lineStyle: {
                color: '#57617B'
            }
        },
    }],
    yAxis: [{
        type: 'value',
        name: 'TPR',
        nameTextStyle: {
            fontSize: 14,
            color: '#F1F1F3'
        },
        min: 0,
        max: 1,
        axisTick: {
            show: false
        },
        axisLine: {
            lineStyle: {
                color: '#57617B'
            }
        },
        axisLabel: {
            margin: 10,
            textStyle: {
                fontSize: 14,
                color: '#F1F1F3'
            }
        },
        splitLine: {
            lineStyle: {
                color: '#57617B'
            }
        }
    }],
    series: [{
            name: 'Log',
            type: 'line',
            smooth: true,
            symbol: 'circle',
            symbolSize: 0.1,
            lineStyle: {
                normal: {
                    width: 1
                }
            },
            itemStyle: {
                normal: {
                    color: 'rgb(137,189,27)',
                borderColor: 'rgba(137,189,2,0.27)',
                borderWidth: 12

                }
            },
            data: ft,
            // show:false
        },{
            name: 'C5',
            type: 'line',
            smooth: true,
            symbol: 'circle',
            symbolSize: 0.1,
            lineStyle: {
                normal: {
                    width: 1
                }
            },
            itemStyle: {
                normal: {
                   color: 'rgb(0,136,212)',
                borderColor: 'rgba(0,136,212,0.2)',
                borderWidth: 12

                }
            },
            data: ft_c5,
            // show:false
        }
        // {
        //     name: 'cutoff',
        //     type: 'line',
        //     smooth: false,
        //     lineStyle: {
        //         normal: {
        //             width: 1
        //         }
        //     },
        //     itemStyle: {
        //         normal: {
        //             color: 'rgb(137,189,27)',
        //             borderColor: 'rgba(137,189,2,0.27)',
        //             borderWidth: 12

        //         }
        //     },
        //     data: cutoffs,
        //     // show:false
        // }, 
    ],
};

// myChart.on("click", function(params) {
//     console.log(params);
//     var opt = myChart.getOption();
//     opt.tooltip[0].triggerOn = 'click';
//     myChart.setOption(opt);
// });

myChart.on('datarangeselected', function(params) {
    // console.log('datarangeselected');
    console.log(params);
    // console.log(params.selected);
    // console.log('datarangeselected end');
});



// myChart.on("mousemove", function(params) {
//     // $("#test .Rmodule").remove();
//     // console.log('mousemove');
//     // console.log(params.dataIndex);
//     // var dataIndex = params.dataIndex;
//     // var maxpoint = testData[dataIndex][1];
//     // var minpoint = testData[dataIndex][2];
//     // var startPoint = [dataIndex, maxpoint];
//     // var endPoint = [dataIndex, minpoint];
//     var opt = myChart.getOption();
//     // var html = '<div class="Rmodule">tn:' + tn[params.dataIndex] + '<br/>minRadius:' + 1 + '</div>';
//     // $("#test").append(html);
//     // $("#test .Rmodule").css({
//     //     top: params.event.offsetY + 10,
//     //     left: params.event.offsetX + 10
//     // });
// });

// myChart.on("mouseout", function(params) {
//     var opt = myChart.getOption();
//     myChart.setOption(opt);
//     // $("#test .Rmodule").remove();
// });