前端 -- HighCharts
1. 官方地址
https://www.hcharts.cn/
2. 引入方式
2.1 js文件下载
https://www.hcharts.cn/download
将highcharts.js放到静态目录中
2.2 CDN引入
<script src="http://code.hcharts.cn/highcharts/10.0.0/highcharts.js"></script>
3. 使用
3.1 API文档
https://api.hcharts.cn/highcharts/
3.2 全局配置
<script>
    Highcharts.setOptions({
    	global:{
            // HighCharts 默认使用UTC时间,此配置关闭UTC时间
            useUTC: false,  
        },
        
    }),
        
    
</script>
3.3 折线图示例
3.3.0 效果展示

3.3.1 字段说明
<script src="http://code.hcharts.cn/highcharts/10.0.0/highcharts.js"></script>
<div id="chart"></div>     <!-- 定义折线图的显示区域 -->
<script>
    var chartConfig = Highcharts.chart('chart', {   // 绑定标签ID
        title: {
            text: null,   // 不显示标题
        },
        subtitle: {
            text: null,  // 不显示二级标题
        },
        legend: {
            // layout: 'vertical',   折线提示信息的位置设置
            // align: 'right',
            // verticalAlign: 'middle'
            enabled: false,  // 关闭折线的提示信息
        },
        credits: {
            enabled: false,  // 关闭版权信息
        },
        yAxis: {   // y轴的显示
            title: {
                text: '就业人数'
            }
        },
        yAxis: {   // x轴的显示
            type: "datetime",  // 以时间格式展示
            tickInterval: 60 * 60 * 24 * 1000, // 间隔时间,毫秒,这里是每天一个点
            labels: {
                formatter: function () {
                    return Highcharts.dateFormat("%m-%d", this.value);   // 显示时间格式,%m-%d表示只显示月和日
                },
                rotation: -30   // 文本的偏移程度,-30为斜30度
            }
        },
        tooltip: {
            headerFormat: '<b>{point.key}</b><br>',   // 鼠标悬浮时的显示内容
            pointFormat: '<span style="color:{series.color}">\u25CF</span> 数量:{point.y}',
        },
        plotOptions: {
            area: {
                stacking: 'normal',
                lineColor: '#666666',
                lineWidth: 1,
                marker: {
                    lineWidth: 1,
                    lineColor: '#666666'
                }
            }
        },
        // 多折线图渲染,列表中几个成员,前端就几条线,字典中的name为折线图在的legend中的显示标题,data为折线图中的点
        series: [{
            name: '安装,实施人员',
            data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
        }, {
            name: '工人',
            data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
        }, {
            name: '销售',
            data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
        }, {
            name: '项目开发',
            data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227]
        }, {
            name: '其他',
            data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
        }],
        // 单折线图渲染,二选一
        series: [{
            name: '安装,实施人员',
            data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
        }],
    });
</script>
3.3.2 Restful交互示例
2. 发送请求获取数据后,动态渲染折线图
<div id="chart"></div>     <!-- 定义折线图的显示区域 -->
<script>
    Highcharts.setOptions({
    	global:{
            // HighCharts 默认使用UTC时间,此配置关闭UTC时间
            useUTC: false,   
        } 
    }),
        
    $(function () {
        initChart()
    })
    function initChart() {
        var chartConfig = {   // 绑定标签ID
            title: {
                text: null,   // 不显示标题
            },
            subtitle: {
                text: null,  // 不显示二级标题
            },
            legend: {
                // layout: 'vertical',   折线提示信息的位置设置
                // align: 'right',
                // verticalAlign: 'middle'
                enabled: false,  // 关闭折线的提示信息
            },
            credits: {
                enabled: false,  // 关闭版权信息
            },
            yAxis: {   // y轴的显示
                title: {
                    text: '就业人数'
                }
            },
            yAxis: {   // x轴的显示
                type: "datetime",  // 以时间格式展示
                tickInterval: 60 * 60 * 24 * 1000, // 间隔时间,毫秒,这里是每天一个点
                labels: {
                    formatter: function () {
                        return Highcharts.dateFormat("%m-%d", this.value);   // 显示时间格式,%m-%d表示只显示月和日
                    },
                    rotation: -30   // 文本的偏移程度,-30为斜30度
                }
            },
            tooltip: {
                headerFormat: '<b>{point.key}</b><br>',   // 鼠标悬浮时的显示内容
                pointFormat: '<span style="color:{series.color}">\u25CF</span> 数量:{point.y}',
                xDateFormat: '%Y-%m-%d',
            },
            plotOptions: {
                area: {
                    stacking: 'normal',
                    lineColor: '#666666',
                    lineWidth: 1,
                    marker: {
                        lineWidth: 1,
                        lineColor: '#666666'
                    }
                }
            },
            // 单折线图渲染
            series: [{
                data:[]
            }],
      		// 后端接口返回数据的格式如下
            // [
            //     ["毫秒级时间戳", 1],
            // 	   ["毫秒级时间戳", 2],
            // ]
        $.ajax({
            url: "",
            type:"GET",
            dataType:"JSON",
            success: function (res) {
                chartConfig.series[0].data = res.data   // 根据后端返回的数据渲染折线图
                var chart = Highcharts.chart('chart', chartConfig);
            }
        })
    }
</script>
3.4 饼状图
3.4.0 效果展示

3.4.1 配置
<script>
    $(function () {
        initChart()
    })
    function initChart() {
        var chartConfig = Highcharts.chart('container', {
            chart: {
                type: 'pie'
            },
            title: {
                text: null,
            },
            credits: {
                enabled: false // 关闭版权信息
            },
            tooltip: {
                pointFormat: '{series.name}: <b>{point.y}%</b>'
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: false,
                    },
                    showInLegend: true
                }
            },
            series: [{
                name: '优先级',
                colorByPoint: true,
                data: [{
                    name: '高',
                    y: 61.41,
                }, {
                    name: '中',
                    y: 11.84
                }]
            }]
        });
        $.ajax({
            url: "",
            type: "GET",
            dataType: "JSON",
            success: function (res) {
                chartConfig.series[0].data = res.data   // 根据后端返回的数据渲染饼状图
                var chart = Highcharts.chart('chart', chartConfig);
            }
        })
    }
</script>
3.5 柱状图
3.5.0 效果展示

3.5.1 配置
<script>
    $(function () {
        initChart()
    })
    function initChart() {
        var chartConfig = Highcharts.chart('container', {
            chart: {
                type: 'column'
            },
            title: {
                text: null,
            },
            xAxis: {
                categories: ['苹果', '橘子', '梨']
            },
            yAxis: {
                min: 0,
                title: {
                    text: '问题数量'
                },
                stackLabels: {  // 堆叠数据标签
                    enabled: true,
                    style: {
                        fontWeight: 'bold',
                        color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                    }
                }
            },
            legend: {
                align: 'center',
                verticalAlign: 'top',
            },
            tooltip: {
                formatter: function () {
                    return '<b>' + this.x + '</b><br/>' +
                        this.series.name + ': ' + this.y + '<br/>' +
                        '总量: ' + this.point.stackTotal;
                }
            },
            plotOptions: {
                column: {
                    stacking: 'normal',
                    dataLabels: {
                        enabled: false,
                    }
                }
            },
            series: [{
                name: '小张',
                data: [5, 3, 4]
            }, {
                name: '小彭',
                data: [2, 2, 3]
            }, {
                name: '小潘',
                data: [3, 4, 4]
            }]
        });
        $.ajax({
            url: "",
            type: "GET",
            dataType: "JSON",
            success: function (res) {
                chartConfig.xAxis.categories = res.data.user_list   // 根据后端返回的数据替换xAxis
                chartConfig.series = res.data.series_list   // 根据后端返回的数据替换series
                var chart = Highcharts.chart('chart', chartConfig);
            }
        })
    }
</script>
    python防脱发技巧

                
            
        
浙公网安备 33010602011771号