highcharts图表常见问题:关于如何设置数据点起始位置为坐标原点的问题分析与总结篇独家爆料

从使用highcharts图表开始到如今也见证了很多使用者一直困惑着这样一个问题:如何才能够设置第一个数据点从坐标原点开始?要在什么条件下才能够从原点开始画?

针对这样一个问题,我一直没有过多地去深入了解,今天也正式有一个朋友遇到这样一个问题。所以,决定将自己的使用心得总结如下。

1、尚未设置xAxis的categories

在我们尚未设置任何categories数据的情况下,让图表自动给x轴分配刻度,你会发现我们不设置任何xAxis的其他属性,第一个数据点在x轴上的位置就是在原点位置。

2、当我们人为设置了xAxis的categories

一旦设置了categories数据过后,不管你设置了xAxis的min、minRange、minPadding 均为0也无济于事,第一个数据点与Y轴的距离还是有一些。


变相思考:

1、不设置categories,其实就是自动给x轴刻度分配了0、1、2、3、n的刻度值和刻度角标一样的。

2、我们想要的无非是想将我们自己的刻度显示在x轴上和tooltip内。

3、那么我们何不巧用xAxis的labels的formatter格式化方法来做这个刻度的真正变换呢?


实际操作:

1、如何让y轴方向上从原点开始?

想要让数据点从原点开始,需要做的就是要控制数据点的x轴方向和y轴方向。关于y轴方向的控制,我们只需要配置两个属性即可:

1)、startOnTick:用于设置是否显示开始刻度,默认为true,我们需要设置此属性值为false。

2)、minPadding:用于设置最小值与X轴的距离值,默认为非0,我们需要设置此属性值为0。

示例配置代码:

yAxis: { minPadding:0, startOnTick:false },

2、如何让X轴方向上从原点开始?

根据前面”变相思考“小结,我们需要这样做:

1)、将categories定义成为一个一维数组。

var categories =  ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'];

2)、巧用labels的formatter格式化方法根据当前刻度值角标去categories数组内对应获取想要体现的刻度值。

labels: {                     formatter: function() {                         return categories[this.value];                     }                 },

3)、为了让刻度不出现间断效果,我们在设置一下刻度间隔属性tickInterval为1

xAxis: {                       labels: {                     formatter: function() {                         return categories[this.value];                     }                 },             tickInterval:1          },

这样一来,我们就可以完美体现不管xAxis的categories是什么数据均可将其第一个数据点设置为从原点开始。

晒上一张效果图:

highcharts图表常见问题:关于如何设置数据点起始位置为坐标原点的问题分析与总结篇独家爆料

完整示例代码如下所示:


$(function () {    var categories =  ['一月', '二月', '三月',                     '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'];          $('#container').highcharts({         xAxis: {                       labels: {                     formatter: function() {                         return categories[this.value];                     }                 },             tickInterval:1          },         yAxis: {             minPadding:0,             startOnTick:false         },         credits:{             text:"www.stepday.com",             url:"http://www.stepday.com",             style:{                 color:"red"             }         },         series: [{             data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]                 }]     }); }); 

在线Demo查看下载:http://jsfiddle.net/stepday/yVG7R/


【另一种可行的方式】:

xAxis: {             min:0,             max:12,             tickInterval:1         },         yAxis: {             min:0,             lineWidth:1,             minPadding:0,             plotLines: [{                 value: 0,                 width: 1,                 color: '#808080'             }]         },

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【课程大纲】 01.Storm项目实战课程大纲 02.CDH5搭建之CM5安装部署 03.CDH5搭建和CM界面化集群管理 04.Hadoop、HBase、Zookeeper集群管理和角色分配 05.Kafka基础知识和集群搭建 06.Kafka基本操作和最优设置 07.Kafka Java API 简单开发测试 08.storm-kafka 详解和实战案例 09.S图表框架HighCharts介绍 10.HBase快速入门 11.基于HBase的Dao基类和实现类开发一 12.基于HBase的Dao基类和实现类开发二 13.项目1-地区销售额-需求分析和架构设计 14.项目1-地区销售额-Spout融合Kafka Consumer及线程安全测试 15.项目1-地区销售额-Bolt业务逻辑处理一 16.项目1-地区销售额-优化Bolt支持重启及结果数据核查 17.项目1-地区销售额-HighCharts图表开发一及Web端架构设计 18.项目1-地区销售额-HTTP长链接实现实时推送 19.项目1-地区销售额-HighCharts图表开发二及jquery运用 20.项目1-地区销售额-Web端完善和细节优化 21.项目1-地区销售额-项目发布及总结 22.项目1-地区销售额-项目需求分析和分区Trident Spout开发 23.项目1-地区销售额-Trident代码开发一 24.项目1-地区销售额-Trident代码开发二 25.项目1-地区销售额-基于HBase存储的State运用 26.项目2-省份销售排行-双纵HighCharts图表开发一 27.项目2-省份销售排行-双纵HighCharts图表开发二 28.项目2-省份销售排行-双纵HighCharts图表开发三 29.项目2-省份销售排行-前台和图表交互开发和Top N实现 30.项目2-省份销售排行-Top N展示优化和项目开发思路总结 31.项目2-效果展示及项目3需求分析梳理 32.项目3-非跳出UV-Storm topology开发一 33.项目3-非跳出UV-Storm topology开发二 34.项目3-非跳出UV-Web端Servlet开发 35.项目3-非跳出UV-Web端Highcharts图表开发 36.项目3-非跳出UV-项目效果调试 37.项目3-非跳出UV-项目整体运行 38.项目3-非跳出UV-升级图表增加柱图一 39.项目3-非跳出UV-升级图表增加柱图二 40.JStorm介绍 41.会员问题收集和解答

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值