当前位置: 代码网 > it编程>编程语言>Javascript > JavaScript图表插件highcharts详解

JavaScript图表插件highcharts详解

2024年05月18日 Javascript 我要评论
一、highcharts官网:https://www.highcharts.com.cn/index.php下载页面:https://www.highcharts.com.cn/download演示地

一、highcharts

highcharts 非商业免费,商业需授权,代码开源。兼容 ie6。

highcharts 底层为svg,方便自己定制,但图表类型有限。

svg特点:

  • 不依赖分辨率。
  • 支持事件处理器,可以为某个元素附加js事件处理器。
  • 最适合带有大型渲染区域的应用程序(如谷歌地图),但复杂度高会减慢渲染速度(任何过度使用dom的应用都不快)。
  • 不适合游戏应用。

highcharts 是一个用纯 javascript 编写的一个图表库, 能够很简单便捷的在 web 网站或是 web 应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。

highcharts 支持的图表类型有直线图、曲线图、区域图、柱状图、饼状图、散状点图、仪表图、气泡图、瀑布流图等多达 20 种图表,其中很多图表可以集成在同一个图形中形成混合图。

访问 highcharts.com 下载 highcharts 包。

二、1 分钟上手 highcharts

引入 highcharts

highcharts 最基本的运行只需要一个 js 文件,即 highcharts.js,以使用 cdn 文件为例,对应的代码是:

创建一个简单的图表

在绘图前我们需要为 highcharts 准备一个 dom 容器,并指定其大小

然后通过 highcharts 的初始化函数 highcharts.chart 来创建图表,该函数接受两个参数,第一个参数是 dom 容器的 id,第二个参数是图表配置,代码如下:

这样你的第一个图表就诞生了!

1、调用远程数据

通过这个简单的例子,我们将学会如何配置基本的参数(options),然后通过一个ajax调用远程数据以及解析数据,最后通过合适的格式展现出来

一个外部的仅包含数据的csv文件'data.csv'(数据源)。 
categories,apples,pears,oranges,bananas 
john,8,4,6,5 
jane,3,4,2,3 
joe,86,76,79,77 
janet,3,16,13,15

2、使用jquery结合highcharts实现从后台获取json实时刷新图表

3、活动图(live charts)

建立服务器。在这个例子中,我们服务器脚本语言返回包含时间(time)以及y值(y value)的javascript数组。

三、highcharts 基本组成

  • 标题(title) 
    图表标题,包含标题和副标题(subtitle),其中副标题是非必须的。
  • 坐标轴(axis) 
    坐标轴包含x轴(xaxis)和y轴(yaxis)。通常情况下,x轴显示在图表的底部,y轴显示在图表的左侧。多个数据列可以共同使用同一个坐标轴,为了对比或区分数据,highcharts提供了多轴的支持。
  • 数据列(series) 
    数据列即图表上一个或多个数据系列,比如曲线图中的一条曲线,柱状图中的一个柱形。
  • 数据提示框(tooltip) 
    鼠标悬停在某点上时,以框的形式提示该点的数据,比如该点的值、数据单位等。数据提示框内提示的信息完全可以通过格式化函数动态指定。
  • 图例(legend) 
    图例是图表中用不同形状、颜色、文字等 标示不同数据列,通过点击标示可以显示或隐藏该数据列。
  • 版权标签(credits) 
    显示在图表右下方的包含链接的文字,默认是highcharts官网地址。通过指定credits.enabled=false即可不显示该信息。
  • 导出功能(exporting) 
    通过引入 exporting.js即可增加图表导出为常见文件功能。
  • 标示线(plotlines) 
    可以在图表上增加一条标示线,比如平均值线,最高值线等。
  • 标示区(plotbands) 
    可以在图表添加不同颜色的区域带,标示出明显的范围区域。

四、配置选项

1、参数配置(属性+事件)

  • chart.events.addseries:添加数列到图表中。
  • chart.events.click:整个图表的绘图区上所发生的点击事件。
  • chart.events.load:图表加载事件。
  • chart.events.redraw:图表重画事件,当点击图注显示和隐藏绘图时可以触发。
  • chart.events.selection:当图表曲线可选择放大时,当选择图表操作时,可以触发该事件。
  • chart.height:所绘制图表的高度值。
  • chart.inverted:图表中的x,y轴对换。
  • chart.polar:是否为极性图表。
  • chart.reflow:当窗口大小改变时,图表宽度自适应窗口大小改变。
  • chart.renderto:图表加载的位置,是页面上的一个dom对象。
  • chart.showaxes:在空白图表中,是否显示坐标轴。
  • chart.type:图表的类型,默认为line,还有bar/column/pie……
  • chart.width:图表绘图区的宽度,默认为自适应。
  • chart.zoomtype:图表中数据报表的放大类型,可以以x轴放大,或是以y轴放大,还可以以xy轴同时放大。
  • colors:图表中多数列时,各数列之间的颜色。是一个数组,一般不动。
  • credits.enabled:是否允许显示版权信息。
  • credits.href:版权所有的链接。
  • credits.text:版权信息显示文字。
  • exporting.buttons.exportbutton.enabled:是否允许显示导出按钮。
  • exporting.buttons.exportbutton.menuitems:导出按钮的菜单选项。
  • exporting.buttons.exportbutton.onclick:导出按钮被点击的事件,不是内部的菜单。
  • exporting.buttons.printbutton.enabled:是否允许打印按钮。
  • exporting.buttons.printbutton.onclick:打印按钮的点击事件。
  • exporting.enabled:打印和导出按钮是否被允许。
  • exporting.filename:被导出文件的文件名。
  • exporting.type:默认导出图片的文件格式。
  • exporting.url:svg图表转换并导出的接口处理地址。
  • exporing.width:默认导出图片的宽度。
  • labels:标签,可以加载到图表的任何位置,里面有items,style。
  • lang:语言参数配置,与导出按钮菜单有关的配置,时间名称的配置等。
  • legend.enabled:是否允许图注。
  • navigation.buttonoptions.enabled:图表中所有导航中的按钮是否可被点击。
  • series:是一个数组。
  • subtitle:配置图表的子标题。
  • title:配置图表的标题。
  • tooltip:配置图表中数据的气泡提示。
  • xaxis,yaxis配置设置坐标轴
  • allowdecimals:坐标轴上是否允许小数。
  • categories:是一个数组,坐标轴的分类。
  • plotlines:绘制主线。
  • tickcolor:刻度颜色。
  • tickinterval:刻度的步进值。
  • labels.rotation:刻度标签旋转度数

2、chart:图表区选项

chart图表区选项用于设置图表区相关属性。

  • backgroundcolor:设置图表区背景色。默认值: #ffffff
  • borderwidth:设置图表边框宽度。默认值:0
  • borderradius:设置图表边框圆角角度。默认值:5
  • renderto:图表放置的容器,一般在html中放置一个div,获取div的id属性值。默认值:null
  • defaultseriestype:默认图表类型line, spline, area, areaspline, column, bar, pie , scatter。默认值:0
  • width:图表宽度,默认根据图表容器自适应宽度。默认值:null
  • height:图表高度,默认根据图表容器自适应高度。默认值:null
  • margin:设置图表与其他元素之间的间距,数组,如[0,0,0,0]。默认值:[null]
  • plotbackgroundcolor:主图表区背景色,即x轴与y轴围成的区域的背景色。默认值:null
  • plotbordercolor:主图表区边框的颜色,即x轴与y轴围成的区域的边框颜色null
  • plotborderwidth:主图表区边框的宽度。默认值:0
  • shadow:是否设置阴影,需要设置背景色backgroundcolor。默认值:false
  • reflow:是否自使用图表区域高度和宽度,如果没有设置width和height时,会自适应大小。默认值:true
  • zoomtype:拖动鼠标进行缩放,沿x轴或y轴进行缩放,可以设置为:'x','y','xy'''
  • events:事件回调,支持addseries方法,click方法,load方法,selection方法等的回调函数。默认值:

3、color:颜色选项

color颜色选项用于设置图表的颜色方案。

  • color:用于展示图表,折线/柱状/饼状等图的颜色,数组形式。默认值:array

highcharts已经默认提供了多种颜色方案,当要显示的图形多于颜色种类时,多出的图形会自动从第一种颜色方案开始选取。自定义颜色方案的方法:

4、title:标题选项,subtitle:副标题选项

title标题选项用于设置图表的标题相关属性。

副标题提供的属性选项与标题title大致相同,可参照标题选项,值得一提的是副标题的text选项默认为'',即空的,所以默认情况下副标题不显示。

  • text:标题文本内容。默认值:chart title
  • align:水平对齐方式。默认值:center
  • verticalalign:垂直对齐方式。默认值:top
  • margin:标题与副标题之间或者主图表区间的间距。默认值:15
  • floating:是否浮动,如果为true,则标题可以偏离主图表区,可配合x,y属性使用。默认值:false
  • style:设置css样式。默认值:{color: '#3e576f',fontsize: '16px'}

5、xaxis:x轴选项,yaxis:y轴选项

x轴选项用于设置图表x轴相关属性。

y轴选项与上述xaxis选项基本一致,请参照上表中的参数设置,不再单独列出。

  • categories:设置x轴分类名称,数组,例如:categories: ['apples', 'bananas', 'oranges']。默认值:[]
  • title:x轴名称,支持text、enabled、align、rotation、style等属性。默认值:
  • labels:设置x轴各分类名称的样式style,格式formatter,角度rotation等。默认值:array
  • max:x轴最大值(categories为空时),如果为null,则最大值会根据x轴数据自动匹配一个最大值。默认值:null
  • min:x轴最小值(categories为空时),如果为null,则最小值会根据x轴数据自动匹配一个最小值。默认值:array
  • gridlinecolor:网格(竖线)颜色。默认值:#c0c0c0
  • gridlinewidth:网格(竖线)宽度。默认值:1
  • linecolor:基线颜色。默认值:#c0d0e0
  • linewidth:基线宽度。默认值:0

6、series:数据列选项

数据列选项用于设置图表中要展示的数据相关的属性。

  • data:显示在图表中的数据列,可以为数组或者json格式的数据。如:data:[0, 5, 3, 5],或data: [{name: 'point 1',y: 0}, {name: 'point 2',y: 5}]。默认值:''
    • series.data.color:某一个数据的颜色。
    • series.data.datalabels:序列中某一个数据的数据标签。
    • series.data.events类同于plotoptions.area.point.events的相关配置。
    • series.data.marker类同于plotoptions.area.marker的相关配置。
    • series.data.name:配置数据点的名称。
    • series.data.sliced:配置在饼图中,扇区的分离距离大小。
    • series.data.x:点的x值。
    • series.data.y:点的y值。
  • name:显示数据列的名称。。默认值:''
  • type:数据列类型,支持 area, areaspline, bar, column, line, pie, scatter or spline。默认值:lineseries.stack:堆叠的分组索引。
  • xaxis,yaxis:当使用多坐标轴时,指定某个数列对应哪个坐标轴。

    7、plotoptions:数据点选项

    plotoptions用于设置图表中的数据点相关属性。plotoptions根据各种图表类型,其属性设置略微有些差异,现将常用选项列出来。

    • enabled:是否在数据点上直接显示数据。默认值:false
    • allowpointselect:是否允许使用鼠标选中数据点。默认值:false
    • formatter:回调函数,格式化数据显示内容。默认值:formatter: function() {return this.y;}
    • plotoptions.area.allowpointselect:是否允许数据点的点击。
    • plotoptions.area.color:绘图的颜色。
    • plotoptions.area.datalabels.enabled:是否允许数据标签。
    • plotoptions.area.enablemousetracking:是否允许数据图表中,数据点的鼠标跟踪气泡显示。
    • plotoptions.area.events.checkboxclick:数据图表中图注中复选框的点击事件。
    • plotoptions.area.events.click:数据图表中,数据点的点击事件。
    • plotoptions.area.events.hide:数据图表中,某一数据序列隐藏时的事件。
    • plotoptions.area.events.show:数据图表中,某一数据序列显示时的事件。
    • plotoptions.area.events.legenditemclick:数据图表中,图注中的项目被点击时的事件,直接赋值false,则不可点击。
    • plotoptions.area.events.mouseout:数据点的鼠标移出事件。
    • plotoptions.area.events.mouseover:数据点的鼠标经过事件。
    • plotoptions.area.marker.enabled:图表中绘图中是否显示点的标记符。
    • plotoptions.area.marker.states.hover.enabled:是否允许标记符的鼠标经过状态。
    • plotoptions.area.marker.states.select.enabled:是否允许标记符的选择状态。
    • plotoptions.area.point.events.click:图表中每一个单独的点点击事件。
    • plotoptions.area.point.events.mouseout
    • plotoptions.area.point.events..mouseover
    • plotoptions.area.point.events.remove:删除图表中的点时的事件。
    • plotoptions.area.point.events.select:图表中点选择事件。
    • plotoptions.area.point.events.unselect:图表中点取消选择时的事件。
    • plotoptions.area.point.events.update:图表中数据发生更新时的事件。
    • plotoptions.area.visible:加载时,数据序列默认是显示还是隐藏。
    • plotoptions.area.zindex:在多序列的情况下,调整每一个序列的层叠顺序。
    • 以上的point.events同样还适用于其他面积类图表(arearange、areaspline、areasplinerange),其他的柱状图(bar、column)及所有图表。
    • plotoptions.area.showinlegend:是否在图注中显示。
    • plotoptions.area.stacking:是以值堆叠,还是以百分比堆叠。
    • plotoptions.area.states.hover.enabled:鼠标放上的状态是否允许。
    • plotoptions.area.stickytracking:鼠标粘性跟踪数据点。
    • plotoptions.arearange,plotoptions.areaspline,plotoptions.areasplinerange类同于plotoptions.area
      • plotoptions.bar.grouppadding:对于柱状图分组,每个分组之间的间隔。
      • plotoptions.bar.grouping:是否对数据进行分组。
      • plotoptions.bar.minpointlength::定义当point值为零时,点的最小长度为多少
      • plotoptions.bar.showinlegend:是否在图注中显示。
      • plotoptions.bar.stacking:是以值堆叠,还是以百分比堆叠(normal/percent)。
      • plotoptions.column,plotoptions.columnrange类同于plotoptions.bar
        • plotoptions.line的相关配置类似于plotoptions.area配置。
        • plotoptions.pie.ignorehiddenpoint:在饼状图中,某一个序列经图注点击隐藏后,整个饼状图是重新以100%分配,还是只在原图基础上隐藏,呈现一个缺口。
        • plotoptions.pie.innersize:绘制饼状图时,饼状图的圆心预留多大的空白。
        • plotoptions.pie.slicedoffset:与allowpointselect结合使用,当点被点击时,对应的扇区剥离,这个参数即配置离开的距离。
        • plotoptions.pie的其他常用配置参数类同于plotoptions.area,plotoptions.scatter,plotoptions.series,plotoptions.spline的相关配置类似于plotoptions.area配置。

        8、tooltip:数据点提示框

        tooltip用于设置当鼠标滑向数据点时显示的提示框信息。

        • enabled:是否显示提示框。默认值:true
        • backgroundcolor:设置提示框的背景色。默认值:rgba(255, 255, 255, .85)
        • bordercolor:提示框边框颜色,默认自动匹配数据列的颜色。默认值:auto
        • borderradius:提示框圆角度。默认值:5
        • shadow:是否显示提示框阴影。默认值:true
        • style:设置提示框内容样式,如字体颜色等。默认值:color:'#333'
        • formatter:回调函数,用于格式化输出提示框的显示内容。返回的内容支持html标签如:b, strong, i, em, br, span。默认值:2
          • tooltip.valuedecimals:允许的小数点位数。
          • tooltip.percentagedecimals:允许百分比的小数点后位数。

        9、legend:图例选项

        legend用于设置图例相关属性。

        • layout:显示形式,支持水平horizontal和垂直vertical。默认值:horizontal
        • align:对齐方式。。默认值:center
        • backgroundcolor:图例背景色。。默认值:null
        • bordercolor:图例边框颜色。。默认值:#909090
        • borderradius:图例边框角度。默认值:5
        • enabled:是否显示图例。默认值:true
        • floating:是否可以浮动,配合x,y属性。。默认值:false
        • shadow:是否显示阴影。默认值:false
        • style:设置图例内容样式。默认值:''

        更多详细信息请参照highcharts官网英文文档:http://api.highcharts.com/highcharts

        四、曲线图

        1、基础曲线图

        2、带有数据标签曲线图表

        3、异步加载数据曲线图表

        返回的文件内容:

        callback("# ----------------------------------------\n 
        # highcharts.com\n# audience overview\n# 20171217-20180117\n 
        # ----------------------------------------\n 
        day index,users,sessions\n 
        12/18/17,\"40,585\",\"48,351\"\n 
        12/19/17,\"43,039\",\"51,499\"\n 
        ........

        12/20/17,\"44,926\",\"53,359\"\n 
        1/17/18,\"41,840\",\"50,285\" 
        ");

        4、基于时间的,可缩放的曲线图表

        5、x 轴翻转曲线图

        配置图表类型 type 为 spline。chart.type 默认为 "line"。

        配置 x 轴翻转。inverted 设置为 true 即 x 轴翻转,默认为 false。

        6、带标记曲线图

        我们使用 marker.symbol 属性来配置标记。标记可以是 'square', 'diamond' 或 图片 url。标记可以添加在任何的数据点上:

        7、标示区曲线图

        使用 yaxis.plotbands 属性来配置标示区。区间范围使用 'from' 和 'to' 属性。颜色设置使用 'color' 属性。标签样式使用 'label' 属性。

        8、不规则时间间隔图表

        9、对数图表

        配置 yaxis.type 为 'logarithmic'。它定义了 x 轴类型。可选值有 "linear", "logarithmic", "datetime" 或 "category"。默认值为linear。

        五、条形图

        1、基本条形图

        设置 chart 的 type 属性 为 bar ,chart.type 描述了图表类型。默认值为 "line"。

        2、堆叠条形图

        配置图表堆叠使用 plotoptions.series.stacking,并设置为 "normal"。

        如果禁用堆叠可设置为 null , "normal" 通过值设置堆叠, "percent" 堆叠则按百分比。

        3、反向条形图

        使用负值的,反向条形图。

        六 、柱形图

        1、基本柱形图

        2、反向柱形图

        七、饼图

        基本饼图

        八、3d图

        3d 柱形图

        设置 chart 的 type 属性为 column,options3d 选项可设置三维效果。

        九、测量图(仪表图)

        测量图

        十、组合图

        柱形图,线条图,饼图

        十一、动态图

        每秒更新曲线图

        chart.event 属性中添加 load 方法(图表加载事件)。在 1000 毫秒内随机产生数据点并生成图表。

        到此这篇关于javascript图表插件highcharts的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持代码网。

        (0)

        相关文章:

        版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

        发表评论

        验证码:
        Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
        站长QQ:2386932994 | 联系邮箱:2386932994@qq.com