【问题标题】:How to align Chart.JS line chart labels to the center如何将 Chart.JS 折线图标签与中心对齐
【发布时间】:2016-11-10 17:53:46
【问题描述】:

我正在使用 Chart.JS 1.0.2 创建折线图:

我要做的是将图表底部的标签移动到每个矩形的中心(而不是与垂直网格线对齐):

chartjs.org 上没有关于此的文档,但我相信通过巧妙的技巧可以轻松解决此问题。关于如何实现这一点的任何想法?

【问题讨论】:

    标签: javascript charts chart.js linechart


    【解决方案1】:

    offsetGridLines(布尔值) 如果为 true,标签将移动到网格线之间。

    type: 'line',
    data: data,
    options: {
        ...
        scales: {
            xAxes: [{
                gridLines: {
                    offsetGridLines: true
                }
            ]}
        }
    }
    

    【讨论】:

    • 您给出的答案与 Pasqual 相同。此解决方案适用于 Chart.js 2.0,而我正在使用 Chart.js 1。
    • 抱歉,我没有更改代码中的参数...现在已编辑。我正在使用 offsetGridLines 而不是 drawOnChartArea。现在可以用了吗?
    • 我仍然不认为这是 Chart.js 1.x 语法。我目前的语法是:new Chart(document.getElementById("line").getContext("2d")).Line(lineChartData, { responsive: true, animation: true, pointDot: true, pointDotRadius: 5, bezierCurve: true, pointHitDetectionRadius: 60, datasetStroke: true, datasetStrokeWidth: 4, datasetFill: true, barDatasetSpacing: 1, scaleOverride: true, drawOnChartArea: true, scaleSteps: 4, scaleStartValue: 0 });
    • 错了!此参数不移动标签,但 GRIDLINES。这不是一回事。
    【解决方案2】:

    ChartJS Documentation,在“网格线配置”下有drawOnChartArea选项:

    名称:drawOnChartArea
    类型:布尔值
    描述:如果为真,则在轴线内的图表区域上画线。当有多个轴并且您需要控制绘制哪些网格线时,这很有用

    {
        type: 'line',
        data: data,
        options: {
            ...
            scales: {
                xAxes: [{
                    gridLines: {
                        drawOnChartArea: true
                    }
                ]}
            }
        }
    }
    

    【讨论】:

    • 在您的答案中添加一个小解释,以描述为什么会这样。
    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • @Pasquale 我认为此解决方案适用于 chart.js 2.x,而正如我在问题中所述,我使用的是 chart.js 1.0.2。我尝试将drawOnChartArea: true 添加到我的图表选项中,但这没有帮助。
    • 这似乎根本没有解决问题,是吗?将线条放在图表区域中如何使刻度标签居中?
    【解决方案3】:

    有点晚了,但希望对某人有所帮助。

    我的问题是试图强制使用type: 'bubble' 和带有type: 'linear' 的x 轴将标签放置在网格线的中心。 “居中标签”功能是带有type: 'category' 的轴的标准功能,就像在条形图上一样。您可以通过定义两个 xAxes 而不显示线性的来获得带有类别样式标签的线性点放置。

    在此示例中,点是在 365 天内绘制的,每个季度都有 x 轴刻度,季度标签位于绘图区域的中心。

    data: {
        xLabels: ['Q1', 'Q2', 'Q3', 'Q4'],
        ...
    }, 
    options: {
        scales: {
            xAxes: [
                {
                    id: 'xAxis1',
                    type: 'linear',
                    display: false,
                    ticks: {
                        min: 0,
                        max: 365,
                        stepSize: 365 / 4
                    }
                },
                {
                    id: 'xAxis2',
                    type: 'category',
                    gridLines: {
                        offsetGridLines: true
                    },
                    scaleLabel: {
                        display: true,
                        labelString: 'Day of Year'
                    }
                }
            ],
            ...
        }
    }
    

    我已将它用于 chart.js 2.x。

    【讨论】:

      【解决方案4】:

      测试一下:

      labelOffset:-5 //adjust number
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      相关资源
      最近更新 更多