美文网首页
记一次 g2plot 图表库的 legend 显示异常的问题

记一次 g2plot 图表库的 legend 显示异常的问题

作者: VioletJack | 来源:发表于2021-10-19 15:45 被阅读0次

    问题

    最近在使用 g2plot 来做数据图表展现,然后遇到一个奇怪的问题。就是数据图出来了,但是图例却显示异常。如下图,应该只有两个维度,但是却显示了三个图例,且后两个图例异常。

    g2plot

    代码

    import { Line } from '@antv/g2plot';
    
    const data = [
      { legend: '2021-09-19', x: '次留', y: 0.36 },
      { legend: '2021-09-19', x: '3留', y: 0.29714285714285715 },
      { legend: '2021-09-19', x: '4留', y: 0.26285714285714284 },
      { legend: '2021-09-19', x: '5留', y: 0.21142857142857144 },
      { legend: '2021-09-19', x: '6留', y: 0.19428571428571428 },
      { legend: '2021-09-19', x: '7留', y: 0.17142857142857143 },
      { legend: '2021-09-19', x: '8留', y: 0.17714285714285713 },
      { legend: '2021-09-19', x: '9留', y: 0.17714285714285713 },
      { legend: '2021-09-19', x: '10留', y: 0.17714285714285713 },
      { legend: '2021-09-19', x: '11留', y: 0.17142857142857143 },
      { legend: '2021-09-19', x: '12留', y: 0.16 },
      { legend: '2021-09-19', x: '13留', y: 0.13142857142857142 },
      { legend: '2021-09-19', x: '14留', y: 0.12571428571428572 },
      { legend: '2021-09-19', x: '15留', y: 0.13142857142857142 },
      { legend: '2021-09-19', x: '30留', y: 0.09714285714285714 },
      { legend: '总计平均', x: '次留', y: 0.47718673492098823 },
      { legend: '总计平均', x: '3留', y: 0.3035152900828808 },
      { legend: '总计平均', x: '4留', y: 0.26802000588408353 },
      { legend: '总计平均', x: '5留', y: 0.2829854969932791 },
      { legend: '总计平均', x: '6留', y: 0.27874847622917515 },
      { legend: '总计平均', x: '7留', y: 0.2388374052232519 },
      { legend: '总计平均', x: '8留', y: 0.22660944206008585 },
      { legend: '总计平均', x: '9留', y: 0.2170305676855895 },
      { legend: '总计平均', x: '10留', y: 0.20822162645218945 },
      { legend: '总计平均', x: '11留', y: 0.1989076012744652 },
      { legend: '总计平均', x: '12留', y: 0.18408662900188325 },
      { legend: '总计平均', x: '13留', y: 0.1885603490063015 },
      { legend: '总计平均', x: '14留', y: 0.18236775818639797 },
      { legend: '总计平均', x: '15留', y: 0.17266562336984873 },
      { legend: '总计平均', x: '30留', y: 0.08823529411764706 },
    ]
    const line = new Line('container', {
      data,
      padding: 'auto',
      xField: 'x',
      yField: 'y',
      seriesField: 'legend',
    });
    
    line.render();
    

    解决方案

    在官方文档中没有找到确切的原因,但是大致上认为是连续图例搞的鬼。于是我给所有的时间维度掐面加上空格:

    import { Line } from '@antv/g2plot';
    
    const data = [
      { legend: ' 2021-09-19', x: '次留', y: 0.36 },
      { legend: ' 2021-09-19', x: '3留', y: 0.29714285714285715 },
      { legend: ' 2021-09-19', x: '4留', y: 0.26285714285714284 },
      { legend: ' 2021-09-19', x: '5留', y: 0.21142857142857144 },
      { legend: ' 2021-09-19', x: '6留', y: 0.19428571428571428 },
      { legend: ' 2021-09-19', x: '7留', y: 0.17142857142857143 },
      { legend: ' 2021-09-19', x: '8留', y: 0.17714285714285713 },
      { legend: ' 2021-09-19', x: '9留', y: 0.17714285714285713 },
      { legend: ' 2021-09-19', x: '10留', y: 0.17714285714285713 },
      { legend: ' 2021-09-19', x: '11留', y: 0.17142857142857143 },
      { legend: ' 2021-09-19', x: '12留', y: 0.16 },
      { legend: ' 2021-09-19', x: '13留', y: 0.13142857142857142 },
      { legend: ' 2021-09-19', x: '14留', y: 0.12571428571428572 },
      { legend: ' 2021-09-19', x: '15留', y: 0.13142857142857142 },
      { legend: ' 2021-09-19', x: '30留', y: 0.09714285714285714 },
      { legend: '总计平均', x: '次留', y: 0.47718673492098823 },
      { legend: '总计平均', x: '3留', y: 0.3035152900828808 },
      { legend: '总计平均', x: '4留', y: 0.26802000588408353 },
      { legend: '总计平均', x: '5留', y: 0.2829854969932791 },
      { legend: '总计平均', x: '6留', y: 0.27874847622917515 },
      { legend: '总计平均', x: '7留', y: 0.2388374052232519 },
      { legend: '总计平均', x: '8留', y: 0.22660944206008585 },
      { legend: '总计平均', x: '9留', y: 0.2170305676855895 },
      { legend: '总计平均', x: '10留', y: 0.20822162645218945 },
      { legend: '总计平均', x: '11留', y: 0.1989076012744652 },
      { legend: '总计平均', x: '12留', y: 0.18408662900188325 },
      { legend: '总计平均', x: '13留', y: 0.1885603490063015 },
      { legend: '总计平均', x: '14留', y: 0.18236775818639797 },
      { legend: '总计平均', x: '15留', y: 0.17266562336984873 },
      { legend: '总计平均', x: '30留', y: 0.08823529411764706 },
    ]
    const line = new Line('container', {
      data,
      padding: 'auto',
      xField: 'x',
      yField: 'y',
      seriesField: 'legend',
    });
    
    line.render();
    

    然后结果显示正常:


    结果

    最后

    其实我这么写是不严谨的,没有去看源码取证,也应该有办法修改图例的类型。但官方文档对于连续图例也说的很不明确。不过暂时而言以上方法的确解决了我的问题。如果有更好的解决方案环境留言讨论~

    相关文章

      网友评论

          本文标题:记一次 g2plot 图表库的 legend 显示异常的问题

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