function doFill(ctx, cfg) {
const {line, target, above, below, area, scale} = cfg;
- const property = line._loop ? 'angle' : 'x';
+ const property = line._loop ? 'angle' : cfg.axis;
ctx.save();
function drawfill(ctx, source, area) {
const target = getTarget(source);
- const {line, scale} = source;
+ const {line, scale, axis} = source;
const lineOpts = line.options;
const fillOption = lineOpts.fill;
const color = lineOpts.backgroundColor;
const {above = color, below = color} = fillOption || {};
if (target && line.points.length) {
clipArea(ctx, area);
- doFill(ctx, {line, target, above, below, area, scale});
+ doFill(ctx, {line, target, above, below, area, scale, axis});
unclipArea(ctx);
}
}
index: i,
fill: decodeFill(line, i, count),
chart,
+ axis: meta.controller.options.indexAxis,
scale: meta.vScale,
line,
};
--- /dev/null
+const data = [
+ {y: 1, x: 12},
+ {y: 3, x: 14},
+ {y: 4, x: 20},
+ {y: 6, x: 13},
+ {y: 9, x: 18},
+];
+
+module.exports = {
+ config: {
+ type: 'line',
+ data: {
+ datasets: [{
+ data: data,
+ borderColor: 'red',
+ fill: false,
+ }, {
+ data: data.map((v) => ({y: v.y, x: 2 * v.x - 1.5 * v.y})),
+ fill: '-1',
+ borderColor: 'blue',
+ backgroundColor: 'rgba(255, 200, 0, 0.5)',
+ }]
+ },
+ options: {
+ indexAxis: 'y',
+ radius: 0,
+ plugins: {
+ legend: false
+ },
+ scales: {
+ x: {
+ display: false,
+ type: 'linear'
+ },
+ y: {
+ display: false,
+ type: 'linear'
+ }
+ }
+ }
+ }
+};