javascript - Chart.js:带部分虚线的折线图

标签 javascript line chart.js

我正在尝试绘制折线图,​​该折线图应显示一条部分实线和部分虚线(以表示真实数据和预期数据)。 我发现这个例子在 2.0.0-alpha 版本上完美运行

var lineChartData = {
    labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
    datasets: [{
        label: "My First dataset",
        data: [1, 8, 3, 4, 2, 3, 4],
        borderColor: '#66f',
        borderDash: [20, 30],
        pointBackgroundColor: "transparent"
    },{
        label: "My First dataset",
        data: [1, 8, 3, 4, 2, , ],
        borderColor: '#66f',
        pointBackgroundColor: "transparent"
    }]
};

var ctx = document.getElementById("chart").getContext("2d");
var myChart = new Chart(ctx, {
    type: "line",
    data: lineChartData,
    options: {
        elements: {
            line: {
                fill: false
            }
        }
    }
});
<script src="https://rawgit.com/nnnick/Chart.js/f3eb6f4a433b4f34a582842dcf7b42f710861a7d/Chart.js"></script>
<canvas id="chart"/>

但是当我用当前的 2.1.3 版本运行相同的代码时,线条没有正确重叠(在点 D 和 E 之间):

var lineChartData = {
    labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
    datasets: [{
        label: "My First dataset",
        data: [1, 8, 3, 4, 2, 3, 4],
        borderColor: '#66f',
        borderDash: [20, 30],
        pointBackgroundColor: "transparent"
    },{
        label: "My First dataset",
        data: [1, 8, 3, 4, 2, , ],
        borderColor: '#66f',
        pointBackgroundColor: "transparent"
    }]
};

var ctx = document.getElementById("chart").getContext("2d");
var myChart = new Chart(ctx, {
    type: "line",
    data: lineChartData,
    options: {
        elements: {
            line: {
                fill: false
            }
        }
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.3/Chart.js"></script>
<canvas id="chart"/>

不幸的是,由于当前版本中已解决的其他错误,我无法使用 alpha 版本。 有什么方法可以用发布版本复制第一个片段中的图表?

最佳答案

一个解决方案可能是:在 dataset(1) 不可见时将其值设置为 null。 这条线不会创建贝塞尔曲线,这很不方便。

例子:

var lineChartData = {
labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
datasets: [{
    label: "My First dataset",
    data: [, , , , 2, 3, 4],
    borderColor: '#66f',
    borderDash: [20, 30],
    pointBackgroundColor: "transparent"
},{
    label: "My First dataset",
    data: [1, 8, 3, 4, 2, , ],
    borderColor: '#66f',
    pointBackgroundColor: "transparent"
}]

};

https://jsfiddle.net/scs_3/8qqv69ot/

关于javascript - Chart.js:带部分虚线的折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390977/

相关文章:

xcode - 在 Xcode for Titanium 中绘制线条不透明度

javascript - 在 Chart.js MVC c# 中使用模型中的数据

javascript - ChartJS 不断将 Canvas 大小调整为默认大小

javascript - 使用不同的查询字符串重新打开相同的 Colorbox

Bash,使用 IFS 从文件中逐行读取

javascript - 使用 JavaScript 检查事件日期是否有效

c++ - 确定两条线段是否相交的代码有什么问题?

chart.js - 带字符串的折线图 x 轴数据点

javascript - 当其他功能运行时单击按钮触发

javascript - 在 SPA 中使用 ko.mapping 和 Knockout 组件