【问题标题】:C3 Bar Graph x-axis labels are too congestedC3 条形图 x 轴标签过于拥挤
【发布时间】:2016-11-17 08:02:10
【问题描述】:

我使用 C3 JS 插件创建了一个条形图,该图工作正常,但问题是 x 轴标签看起来太拥挤,如下所示

Working JSFiddle

我的代码如下所示

var chart = c3.generate({
        bindto: "#chart",
    data: {
        x : 'x',
        columns: [

['x', "2016-04-01","2016-04-08","2016-04-15","2016-04-22","2016-04-29","2016-05-06","2016-05-13","2016-05-20","2016-05-27","2016-06-03","2016-06-10","2016-06-17","2016-06-24","2016-07-09","2016-07-10","2016-07-11","2016-07-12","2016-07-13","2016-07-15","2016-07-16","2016-07-17","2016-07-18","2016-07-19","2016-07-20","2016-07-21","2016-07-22","2016-07-23","2016-07-24","2016-07-25","2016-07-26","2016-07-27","2016-07-28","2016-07-29","2016-07-30","2016-07-31","2016-08-01","2016-08-02","2016-08-03","2016-08-04","2016-08-05","2016-08-06","2016-08-07","2016-08-08","2016-08-09","2016-08-10","2016-08-11","2016-08-12","2016-08-13","2016-08-14","2016-08-15","2016-08-16","2016-08-17","2016-08-18","2016-08-19","2016-08-20","2016-08-21","2016-08-22","2016-08-23","2016-08-24","2016-08-25","2016-08-26","2016-08-27","2016-08-28","2016-08-29","2016-08-30","2016-08-31","2016-09-01","2016-09-02","2016-09-03","2016-09-04","2016-09-05","2016-09-06","2016-09-07","2016-09-08","2016-09-09","2016-09-10","2016-09-11","2016-09-12","2016-09-13","2016-09-14","2016-09-15","2016-09-16","2016-09-17","2016-09-18","2016-09-19","2016-09-20","2016-09-21","2016-09-22","2016-09-23","2016-09-24","2016-09-25","2016-09-26","2016-09-27","2016-09-28","2016-09-29","2016-09-30","2016-10-01","2016-10-02","2016-10-03","2016-10-04","2016-10-05","2016-10-06","2016-10-07","2016-10-08","2016-10-09","2016-10-10","2016-10-11","2016-10-12","2016-10-13","2016-10-14","2016-10-15","2016-10-16","2016-10-17","2016-10-18","2016-10-19","2016-10-20","2016-10-21","2016-10-22","2016-10-23","2016-10-24","2016-10-25","2016-10-26","2016-10-27","2016-10-28","2016-10-29","2016-10-30","2016-10-31","2016-11-01","2016-11-02","2016-11-03","2016-11-04","2016-11-09"], 
['pv1', 2500,2500,2500,2500,2500,2500,2500,2500,2500,2500,2500,2500,2500,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2696,2748,2748,2694,2694,2694,2694,2694,2694,2694,2668,2668,2668,2668,2576,2572,2572,3043,3084,3084,3084,3084,3084,3156,3521,3521,3550,3542,3542,3573,3580,3629,3579,3584,3542,2757,2791,2696,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3415,3414,3414,3414,3414,3414,3414,3414,3414,3414,3414,3414,3414,3414,3369,3376,3371,3373,3371,3379,3363,3373,3347,3348,3382,3402,3410,3434,2579,2579,2369],
['pv2', 1750,1750,1750,1750,1825,1850,1975,2150,2375,2425,2475,2500,2500,2087,2087,2087,2087,2091,2087,1767,1767,1767,1633,1498,1498,1642,1637,1633,1609,1841,1713,1702,1862,1888,1888,1888,1949,1976,1977,2014,2014,2014,1946,1966,1973,2224,2252,2318,2318,2318,2327,2373,2513,2535,2543,2534,2539,2823,2849,2990,3142,3142,3108,2513,2687,2678,2856,2860,2861,2862,2866,2869,2870,2875,2874,2874,2874,2879,2885,2886,2883,2889,2896,2895,2899,2903,2909,2911,2913,2913,2913,2916,2922,2933,2937,2943,2942,2943,2947,1811,1826,1837,1840,1840,1841,1843,1511,1854,1853,1851,1852,1853,1849,1852,1874,1857,1883,1886,1888,1904,1903,1924,1947,2060,2068,2068,2082,1582,1344,836,839,788]
], 
        type: 'bar'
    },
    axis: {
        x: {
            type: 'category',
            tick: {
                rotate: -60,
                multiline: false
            },
            height: 130
        }

    }
});

谁能告诉我一些解决方法

我做了什么来解决它

我使用时间序列类型而不是类别类型,之后标签问题得到解决,但图表被绘制为三月的更多空白,如下所示

Working JSFiddle

【问题讨论】:

    标签: javascript html bar-chart c3.js


    【解决方案1】:

    您可以为此使用 c3 的滴答计数设置,所以这里我们说 20 个标签。

    但是,现在解析为分数类别值的刻度将不会显示 - 即 20 个等距刻度中的第 2 个可能是 x 类别轴中的第 2.6667 个元素 - 所以您需要有一点格式功能可以为此调整,否则你只会得到结束和开始标签。 (或者你可以算出一个滴答计数,除以你的数据计数 + 1 作为一个整数。)

    tick: {
       format: function (x) { 
          var cats = this.api.categories();
          return cats[Math.round(x)];
       },
       count: 20,
       rotate: -60,
       multiline: false
    },
    

    http://jsfiddle.net/fz0t10yb/7/

    【讨论】:

      【解决方案2】:

      一种可能的解决方案是仅在所需索引处使用 x 轴标签,而将其他标签留空。

      ['x', "2016-04-01","","","","2016-04-29","","","",...]
      ['pv1', 2500,2500,2500,2500,2500,2500,2500,2500,...]
      ['pv2', 1750,1750,1750,1750,1825,1850,1975,2150,...]
      

      您可以定位标签,以便它可以捕捉日期,同时它看起来也不错。

      【讨论】:

      • 时间序列怎么样。你知道为什么那个空白会来吗
      • 可能是因为你的数据不一致。即 x 轴值的间距不相等。最初的数据间隔为 7 天,之后是每天。
      • 不知道 :(
      猜你喜欢
      • 2019-04-02
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多