echart在X轴下方添加字
发布日期:2021-08-14 17:36:14 浏览次数:9 分类:技术文章

本文共 2573 字,大约阅读时间需要 8 分钟。

 使用Echart做统计图表,这个方便快捷还高大上

官方网址 

按照文档,很快就做出了一个柱图表

在X轴下方,要显示出对应日期是星期几(上图最下方,用红框的部分),这个问题查了很长时间的API,终于找到了一个疑似能解决这个问题的配置项.

这个配置项markLine, 位置在: https://www.echartsjs.com/option.html#series-bar.markLine 

不清楚这个配置项是为了实现哪些功能而制造的,但是解决了目前这个要求

具体配置如下:

markLine: {    data:     [      [            // 0柱子位置绘画 起点          {            name: `周一`, xAxis: 0, y: canvaHeight,            lineStyle: { opacity: 0, color: '#69707F' }          },          // 终点          { xAxis: 0, y: canvaHeight }      ],      [            // 1柱子位置绘画 起点          {            name: `周二`, xAxis: 1, y: canvaHeight,            lineStyle: { opacity: 0, color: '#69707F' }          },          // 终点          { xAxis: 1, y: canvaHeight }      ],    ],    // 不要动画    animation: false}

配置项的简要说明:

markLine最重要的data属性,指定了绘画的内容和画的坐标位置,

data是一个数组,

每一数组项里面的内容是两个对象,其中0位表示起点数据,1位表示终点数据,这两个对象说明了绘画的起点和终点

// data中的一项[    {      name: `周一`,// 要显示的文字或内容      xAxis: 0,// X坐标,0表示第1个柱子位置      y: canvaHeight,// y坐标,y表示相对于图表容器的Y坐标,TOP值,这里根据实际调整一下,让它正好处于X轴下方      lineStyle: { opacity: 0, color:'#69707F'}// 画线的样式,opacity表示,不需要画标线,只要文字就行    },    {      // 结束点的坐标      xAxis: 0,// 还是0,这里表示就是画在X轴的正下方      y: canvaHeight    }]

 

另外,有个要注意的地方是,绘画出的内容会跳动,这其实是它的动画效果,由于设定的起止点为同一个点,所以它会原地闪动.将动画取消就不闪动了

{

   animation: false

}

 

也许这个问题有更简单的解决办法 ,但是找了很久的配置项,

却没有找到一个能直接在对应X轴下方,再显示一排内容的配置项,此种方法解决了.

 


 

以下是其它需求解决方案

* echartDOM容器和CANVAS之间有距离,这个距离使用这个grid属性可以指定,

 

var option = {      grid: {        left: '15px',// 这个离左边距离        right:'15px'// 这个离右边距离      }.........

 

 * 让指定的柱子居中屏幕

 为什么要实现这个功能呢,还是上面那个柱子图,如果需要将当天日期,例如12号这一天的柱子,显示在屏幕中央,有什么办法?

上面的例子是其实是做了一个横着滚动的DIV,里面才是echart的DIV.

 

 12号,这个柱子显示在中央了..

原理是设置外层DIV的scrollLeft这个值 ,让它滚动到正好 12号柱子的位置.

那么计算出12号柱子的位置就是关键了,柱子图的宽度可以预先设定好,

{
      barWidth:1800px;
}
 
这个值由柱子数和每柱子宽度得出,例如要显示30个柱子,每个柱子分配60px,那么就是1800px;
柱子图canvas与DIV之间的距离,可以设置为左 右,各 30px,就是每个柱子的一半长度 60px/2
这样设定后,就能计算出第12根柱子离DIV左边的距离了,就是 12*60px.这是个公式,可以得出N柱子离DIV左边的距离.
 
最后计算出滚动条的scrollLeft的值:这个有点复杂 
div在不滚动时,能够显示出最多X根柱子, X = 屏幕宽度 / 60px 
如果让第N个柱子显示在中央,那么 X/2根柱子,是不需要滚动的, 2 就是屏幕的1/2
由于N柱离左边的距离是N*60px,所以DIV的scrollLeft的值就是
 

(N - window.innerWidth / 2 / 60px) * 60px

也就是第N柱子,离左边的距离,减去不需要滚动的柱子数/2.
如果不希望柱子图贴屏幕的边,而是希望有一定的距离;  例如在滚动DIV上设置了  padding:0 15px;
那么上面的公式要再减去这个15px.
 
FUCK! 这个卑鄙的功能想了很久才整理好思路,没想到算法这么简单.
 

* 如果调整了canvasDOM 的宽度,那么如何重绘图表?

这个问题使用api就可以解决,地址在这里 
官网原话
有时候图表会放在多个标签页里,那些初始隐藏的标签在初始化图表的时候因为获取不到容器的实际高宽,可能会绘制失败,因此在切换到该标签页时需要手动调用 
resize 方法获取正确的高宽并且刷新画布,或者在 
opts 中显示指定图表高宽。
chart.resize({width:'这里设置新图表的宽度就可以了'})

 


 

echart高大上,功能齐全,这也造成了,配置项很多,太复杂了.文档界面看起来也不甚清楚,如果有配置项和相应图表效果对照就好很多了...^_^

转载于:https://www.cnblogs.com/mirrortom/p/10294409.html

转载地址:https://blog.csdn.net/weixin_30731287/article/details/95548947 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:OpenCV Mat数据类型指针ptr的使用
下一篇:嵌入式机器学习处理器的技术挑战和机会(转)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年12月02日 14时50分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

html5片转为base64,html5 file转换base64 2019-06-17
pandas取第一行数据_这些Pandas核心操作都不会,怎么搞机器学习! 2019-06-17
arduino声音传感器与二极管_史上最详细的Arduino入门学习精品课程-第一课学习准备篇... 2019-06-17
显示器分辨率一直跳_买显示器时你所需要了解的: 2019-06-17
client netty 主动发数据_netty事件模型实现原理 2019-06-17
归一化强度代表什么_日记(不锈钢A2-70代表的信义) 2019-06-17
rust办宏G什么意思_用Rust写一个斗兽棋游戏 2019-06-17
用a卡还是n卡_都9102年了,为什么还有人说A卡色彩比N卡好? 2019-06-17
无尽列表_魔兽世界:腐蚀卷轴列表出现二级渠道爆击,附魔宝石价格一路飙升... 2019-06-17
修改df的值_详解Linux中/dev/shm目录--概念、修改大小及应用 2019-06-17
算法代码中的循环矩阵在哪体现_格拉姆矩阵(Gram matrix)详细解读 2019-06-17
怎么安装aptdaemon模块_apt install 到底做了什么 2019-06-17
mysql8.0卸载出现问题_mysql8.0卸载干净--win10 2019-06-17
mysql日志服务器搭建_rsyslog+mysql+loganalyzer日志服务器搭建 2019-06-17
大文件CSV导入MYSQL_将大csv文件导入cp网站出租搭建mysql数据库 2019-06-17
批量部署mysql_saltstack应用之批量部署mysql 2019-06-17
mysql 创建查询 删除_MySQL 表操作{创建|查询|修改|删除} 2019-06-17
找不到java_mysql_Java-找不到com.mysql.jdbc.driver类 2019-06-17
mysql datediff多一天_怎么在MySQL中使用DATEDIFF函数获取两个日期的时间间隔 2019-06-17
现代文翻译成古文_把现代文翻译成古文诗词,太雅致了! 2019-06-17