美文网首页
关于前端绘制图表的思考

关于前端绘制图表的思考

作者: VioletJack | 来源:发表于2023-03-27 11:19 被阅读0次

关于绘图的思考

绘制过程

很久之前做过一个医院护理单折线图的需求,其实也是类似的实现思路。 —— 使用ZRender实现护理单折线图功能

在自己实现了一遍之后,感觉无论是用代码还是用笔画,思路和实现逻辑都是一样的:

  • 拿到数据源和图表配置要求
  • 根据需求定位绘制区域
  • 根据数据源在绘制区域内确定坐标轴范围和刻度
  • 根据已知坐标轴进行绘制

其实像 G2、Echart 这类图表库,与自行绘制图表的不同点只在于它要满足更多的需求、更加的大而全。为了能够大而全,就会有大量配置项 API,它不能草率的开始绘制,而是需要先将数据源和配置项收集好,再根据已知条件进行一系列计算。最后才进行绘制。

G2 vs G2Plot

众所周知,G2Plot 是基于 G2 来实现的。它们在实现图表的不同之处在于:

  • G2 是通过一条条的 API 来对图表进行定义和描述,更符合从头开始绘图的思路。最后通过 render() 函数进行真正的绘制。
  • G2Plot 内部默认有 G2 的配置,再合并用户自定义的配置项。然后将最终配置项通过 G2 API 来完成最终绘制。

所以,使用 G2Plot 只需要知道各种配置项就可以完成需求,上手难度更小,适合一些大众需求。而 G2 可以根据需求逐步定制所需的图表,自由度较高,适合应对一些特殊需求。

图表组件的实现思路

  • legend 通过已有数据源直接绘制图形和文本就可以
  • tooltip 在 body 上创建一个 div 元素承载 tooltip 内容, 通过 canvas 对象的 hover 事件获取位置,将内容 div 通过绝对定位移动到目标位置。
  • axis 通过 canvas 来绘制线和刻度,这里需要计算刻度的间隔和范围。
  • label 通过 canvas 来绘制为本即可

相关文章

网友评论

      本文标题:关于前端绘制图表的思考

      本文链接:https://www.haomeiwen.com/subject/gdxardtx.html