zoukankan      html  css  js  c++  java
  • Highcharts 江湖就这样

    最近老喜欢夸人。 真是 吾辈之楷模,业界之精英,家里好男人。社会好榜样,人民好公仆,能上厅堂。能下厨房。能搬砖起舞,能舞枪弄棒,能吞能吐,能屈能伸

    图表插件,业界有很多,有highcharts 和echarts ,D3抑或其他,但是个人觉得 highchairs 确实好用。起码我理解起来是这样的

    这篇文章不是简单的讲解怎么使用highcharts 。 官网有get started。


    1.0.1. Highcharts 基本组成

    Highcharts 包含标题(Title)、坐标轴(Axis)、数据列(Series)、数据提示框(Tooltip)、图例(Legend)、版权标签(Credits)等,另外还可以包括导出功能按钮(Exporting)、标示线(PlotLines)、标示区域(PlotBands)、数据标签(dataLabels)等

    Paste_Image.png

    Paste_Image.png

    我们姑且由浅入深的来看下这些

    首先假设我们已经有了html 页面 , 我们现在需要做的就是改变 options

    <script src="https://code.highcharts.com/highcharts.js"></script>
    
    <div id="container"></div>
    
    <script>
         var options = {}
         $(function(){
         Highcharts.chart('container’,options)
         })
    </script>

    1.1. 颜色(colors)

    Highcharts 中数据列的颜色是通过 colors 来指定的,colors 是个颜色值数组,默认是:

    colors: ['#7cb5ec', '#434348', '#90ed7d', '#f7a35c', '#8085e9', '#f15c80', '#e4d354', '#8085e8', '#8d4653', '#91e8e1']
    

    共有 10个默认颜色,你可以修改颜色值或增加颜色个数来自定义图表数据列颜色。

    1.1.1. 每个点的形状通过plotOptions 控制

    plotOptions: {
        series: {
            marker: {
                enable: true,
                symbol: 'circle'
            }
        }
    },

    Paste_Image.png

    1.2. chart , title ,subtitle

    一图解决的事情就不唧唧歪歪了。

    Paste_Image.png

    Paste_Image.png

    Paste_Image.png


    1.3. 版权标签(Credits)

    Paste_Image.png

    1.4. 图例(Legend)

    图例。用不同形状、颜色、文字等 标示不同数据列,通过点击标示可以显示或隐藏该数据列。

    Paste_Image.png

    下面是详细描述

    Paste_Image.png

    Paste_Image.png

    Paste_Image.png

    默认图例点击事件

    1、默认图例点击事件 图例默认的点击行为是显示或隐藏当前数据列。

     plotOptions: {
        series: {
          events: {
              legendItemClick: function(e) {
                  /*
                   * 默认实现是显示或隐藏当前数据列,e 代表事件, this 为当    前数据列
                   */
              }
          }
        }
      } 

    2、禁用图例点击隐藏效果

    plotOptions: {
        series: {
          events: {
              legendItemClick: function(e) {
                  return false;
              }
          }
        }
      } 

    Paste_Image.png


    1.5. 数据提示框(Tooltip)

    数据提示框指的当鼠标悬停在某点上时,以框的形式提示该点的数据,比如该点的值,数据单位等。数据提示框内提示的信息完全可以通过格式化函数动态指定;通过设置 tooltip.enabled = false 即可不启用提示框。

    Paste_Image.png

    提示框外观

    下面的实例代码给出了关于数据提示框的外观的常用配置

      tooltip: {
      backgroundColor: '#FCFFC5',   // 背景颜色
      borderColor: 'black',         // 边框颜色
      borderRadius: 10,             // 边框圆角
      borderWidth: 3,               // 边框宽度
      shadow: ture,                 // 是否显示阴影
      animation: true               // 是否启用动画效果
      style: {                      // 文字内容相关样式
          color: "#ff0000",
          fontSize: "12px",
          fontWeight: "blod",
          fontFamily: "Courir new"
        }
      }

    提示框内容

    Paste_Image.png

    html 内容

    数据提示框默认(在没开启支持 HTML 模式的情况下)支持少量的 HTML 标签,包括 b br strong i em,标签的内容可以通过 style 属性来指定,不过仅限文字相关的 CSS 样式属性。

    通过设置 tooltip.useHTML = true

    可以开启 HTML 模式,即可以用纯 HTML 内容来渲染数据提示框(默认是以 SVG 渲染)。

    开启 HTML 模式后,就可以给提示框添加 链接、图片、表格等 HTML 元素,给提示框添加表格的示例代码是:

    tooltip: {
    shared: true,
    useHTML: true,
    headerFormat: '<small>{point.key}</small><table>',
    pointFormat: '<tr><td style="color: {series.color}">{series.name}: </td>' +
        '<td style="text-align: right"><b>{point.y} EUR</b></td></tr>',
    footerFormat: '</table>',
    valueDecimals: 2
    }
    值的前缀、后缀及小数点

    在展现数据信息是,我们经常会给数据添加一些修饰信息,例如数据单位。highcharts 提供了 valuePrefix、valueSuffix 来给数据添加前缀及后缀。

    tooltip: { 
        valuePrefix: '¥',
        valueSuffix: '元'
    }

    另外,对于小数点的处理,可以通过 valueDecimals 来指定保留小数位数(当然可以通过格式化函数来进行更复杂的处理)。

    对于多个数据列数据提示框添加后缀时,一般是将属性分别配置在数据列中,实例:

    series: [{
      name: 'Rainfall',
      type: 'column',
      yAxis: 1,
      data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
      tooltip: {
          valueSuffix: ' mm'
      }
      }, {
      name: 'Temperature',
      type: 'spline',
      data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
      tooltip: {
          valueSuffix: '°C'
      }
    }]

    坐标轴(Axis)

    所有的图表除了饼图都有X轴和Y轴,默认情况下,x轴显示在图表的底部,y轴显示在左侧(多个y轴时可以是显示在左右两侧),通过设置 chart.inverted = true 可以让x,y轴显示位置对调。下图为图表中坐标轴组成部分

    Paste_Image.png

    坐标轴标题。默认情况下,x轴为null(也就是没有title),y轴为'Value'

    设置坐标轴标题的代码如下:

      xAxis:{
       title:{
         text:'x轴标题'
     }
    }
    yAxis:{
       title:{
           text:'y轴标题'
       }
    }

    坐标轴刻度标签

    坐标轴标签(分类)。Labels常用属性有enabled 、formatter、setp、staggerLines

    1)enabled 是否启用Labels。x,y轴默认值都是true,如果想禁用(或不显示)Labels,设置该属性为false即可。

    2)Formatter

    标签格式化函数。默认实现是:

    formatter:function(){ return this.value;}
    this.value 代码坐标轴上当前点的值(也就是x轴当前点的x值,y轴上当前点的y值),除了value变量外,还有axis、chart、isFirst 、isLast

    可用。例如调用this.isFirst的结果如下图所示

    Paste_Image.png

    另外一个例子,实现更高级的自定义格式化函数,截图如下:

    Paste_Image.png

    实现代码如下:

    yAxis: {        
      labels: {
        formatter:function(){
          if(this.value <=100) { 
            return "第一等级("+this.value+")";
          }else if(this.value >100 && this.value <=200) { 
            return "第二等级("+this.value+")"; 
          }else { 
            return "第三等级("+this.value+")";
          }
        }
      }
    }

    3)Step Labels显示间隔,数据类型为number(或int)。下图说明了step的用法和作用

    Y轴坐标轴标签步进

    4)staggerLines

    水平轴 Labels 显示行数。(该属性只对水平轴有效)当 Lables 内容过多时,可以通过该属性控制显示的行数。和该属性相关的还有maxStaggerLines属性。

    3、坐标轴刻度 Tick为坐标轴刻度。默认情况下x轴刻度高(tickLength 属性)为5px,宽为1px;y轴宽为0px(也就是不显示刻度)。Tick相关的属性主要有tickLength、tickWidth、tickColor、tickInterval、tickmarkPlacement。


    1)tickLength、tickWidth、tickColor 分别代表刻度线的长度、宽度、颜色。 2)tickInterval 刻度间隔。其作用和Lables.step 类似,就是不显示过多的x轴标签内容,不同的是,tickInterval是真正意义上的调整刻度,而Lables.step只是调整Labels显示间隔。所以在实际应用中,tickInterval 用的多。


    3)tickmarkPlacement刻度线对齐方式,有between和on 可选,默认是between。设置为on

    后的变化如下图: Paste_Image.png


    Axis gridLines 坐标轴网格线。默认情况下,x轴网格线宽度为0,y轴网格线宽度为1px。网格线共有三个属性可设置,分别是:

      gridLineWidth
      gridLineColor
      gridLineDashStyle
    

    1)gridLineWidth 网格线宽度。x轴默认为0,y轴默认为1px。

    2)gridLineColor 网格线颜色。默认为:#C0C0C0。

    3)gridLineDashStyle 网格线线条样式。和Css border-style类似,常用的有:Solid、Dot、Dash

    下图为自定义x和y轴的gridLines效果图

    自定义网格线.png

    1.6. 数据列(Series)

    数据列配置是 Highcharts 最复杂也是最灵活的配置,如果说 Highcharts 是灵活多变,细节可定制的话,那么数据列配置就是这个重要特性的核心

    一、什么是数据列

    数据列是一组数据集合,例如一条线,一组柱形等。图表中所有点的数据都来自数据列对象,数据列的基本构造是:

    series : [{ name : '', data : []}]
    

    提示:数据列配置是个数组,也就是数据配置可以包含多个数据列。数据列中的 name 代表数据列的名字,并且会显示在数据提示框(Tooltip)及图例(Legend)中。

    二、数据列中的数据

    在数据列的 data 属性中,我们可以定义图表的数据数组,通常有三种定义方式:

    1、数值数组。在这种情况下,配置数组中的数值代表 Y 值,X 值则根据 X 轴的配置,要么自动计算,要么从 0 起自增,或者是根据 pointStart 及 pointInterval

    自增;在分类轴中, X 值就是 categoies 配置,数值数组配置实例如下:

    data : [1, 4, 6, 9, 10] 
    

    2、包含两个值的数组集合。在这种情况下,集合中数组的第一个值代表 X, 第二个值代表 Y;如果第一个值是字符串,则代表该点的名字,并且 X 值会如 1 中所说的情况决定。数组集合的实例:

    data : [ [5, 2], [6,3], [8,2] ]
    

    3、数据点对象集合。在这种情况下,集合中元素都是数据点对象,对象中可以配置数据见 plotOptions.series 或 plotOptions.{图表类型} 所列。配置实例:

    data : [{ name : "point 1", color : "#00ff00", y : 0}, { name : "Point 2", color : "#ff00ff", y : 5}]
    

    另外,通过这种方式还可以增加额外变量,详见例子:增加额外变量


    三、数据点及标记

    在直角坐标图(即常规的包含X、Y轴的图表)中,数据点相当于图表中的一个 (x,y)点。数据点的配置可以在数据列中是数据数组里指定。对于其他类型的图表(非直角坐标图),数据点不仅仅表示 X,Y值,例如在范围图中,数据点包含 x,low, high值;在 OHLC (蜡烛柱状图)中,数据点包含 x,open , high, low, close;在饼图或仪表图中,数据点只表示一个值。

    数据点配置适用所有图表,下面的例子说明了如何指定某个点的颜色:

    series : [{
        data : [ 29,9, 71.5, 106.4, 
        {
            y : 200,
            color : "#BF0B23"
        }, 194.1 , 20 ]
    }]

    在 直线图、曲线图、面积图及面积范围图中可以为数据点指定标记,可以是某种形状, 图片等,实例:

    series : [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6,148.5,
        {
          y: 216.4, 
          marker: { 
              fillColor: '#BF0B23',
              radius: 10 
          }
        }, 194.1, 95.6, 54.4]
    }]

    四、数据列配置

    数据列共有三个级别的配置,权重从低到高依次如下:

    配置在 plotOptions.series 中

    对应的 API 为:plotOptions.series 中,针对所有类型图表有效,一般是通用配置。配置在 plotOptions.{图表类型} 中

    对应的 API 为 : plotOptions 下的指定图表类型,针对当前类型图表有效,一般是某一种图表的通用配置。

    配置在 series 中对应的 API 为:series, 针对当前数据列有效 以上三中方式自上往下权重依次递增的,也就是配置在 series 中的属性会覆盖 plotOptions 中的配置。 Highcharts API 的这种层级关系体现了 API 设计的继承性和灵活性。


    下面列举数据列的一些常用属性

    1、动画(Animation)

    Highcharts 图表默认是以动画的形式展现图形加载过程的,可以通过 series.animation或 plotOptions.series.animation来指定动画相关配置(是否启用动画,动画效果等)。

    2、颜色(Color) 可以通过 series.color 来指定数据列的颜色,通过 plotOptions.{图表类型}.color 来给某一种类型的图表设定颜色。

    3、点的选择(Selection)

    Paste_Image.png

    通过设置 allowPointSelect = true 可以使数据点可选择

    plotOptions: { series: { allowPointSelect: true }}
    

    对应的获取选中的点是通过 chart.getSelectedPoints() 函数来实现的

    var selectedPoints = chart.getSelectedPoints();
    

    提示:按住 CTRL 或 SHIFT 键可以多选 4、线条宽度(lineWidth)

    Paste_Image.png

    可以通过 lineWidth 来指定线条宽度

    series: [{
      data: [216.4, 194.1, 95.6],
      lineWidth: 5
    }]

    5、鼠标形状(cursor) cursor 属性可以指定鼠标形状,即指定当鼠标悬停在数据列上时对应的鼠标样式(当配置了数据列点击事件时)。 6、数据标签(dataLables)

    Paste_Image.png

    数据标签指的是在数据点上显示一些数据信息标签,对应的 API 为 series.data.dataLabels

    plotOptions: {
        line: {
            dataLabels: {
                enabled: true
            }
        }
    }

    数据标签默认显示当前数据点的点值,可以通过 formatter函数或 format来对其格式化。

    plotOptions: {
        line: {
            dataLabels: {
                enabled: true,
                formatter: function() {
                    return this.x + "   " + this.y;
                },
                // format: "{x}      {y}"
            }
        }
    }

    7、线条样式(Dash Style)

    Paste_Image.png

    dashStyle 可以指定线条的样式 (这里有 Highcharts 支持的所有 线条样式

    series: [{    data: [1, 3, 2, 4, 5, 4, 6, 2, 3, 5, 6],    dashStyle: 'longdash'
    }]
    

    Paste_Image.png

    1.6.1. 小功能

    Paste_Image.png

  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/passkey/p/10619210.html
Copyright © 2011-2022 走看看