前端折线图中背景_ChartJS折线图设置背景颜色

I'm working with ChartJS and I wanted to convert the a line chart to png, but the problem is that the image always downloaded with transparent background, which is not what I need, I tried many options, nothing really worked.

If someone have ever faced this problem, please suggest something worked for you.

解决方案

Here's one way to get a fully-opaque version of your ChartJS:

Wait until the chart is fully animated out and complete. You can do this by adding the onAnimationComplete property to the chart.

In the onAnimationComplete function:

Create an in-memory temporary canvas of equal size as your chart.

Fill the temp canvas with white

drawImage the ChartJS canvas over the white-filled temp canvas

Create an image from the temp canvas.

Here's how that might be done:

var ctx = document.getElementById("canvas").getContext("2d");

window.myLine = new Chart(ctx).Line(lineChartData, {

responsive: true,

onAnimationComplete:function(){

var tcanvas=document.createElement('canvas');

var tctx=tcanvas.getContext('2d');

tcanvas.width=ctx.canvas.width;

tcanvas.height=ctx.canvas.height;

tctx.fillStyle='white';

tctx.fillRect(0,0,tcanvas.width,tcanvas.height);

tctx.drawImage(canvas,0,0);

var img=new Image();

img.οnlοad=function(){

document.body.appendChild(img);

}

img.src=tcanvas.toDataURL();

}

});

Here's example code and a Demo:

var randomScalingFactor = function(){ return Math.round(Math.random()*100)};

var randomColorFactor = function(){ return Math.round(Math.random()*255)};

var lineChartData = {

labels : ["January","February","March","April","May","June","July"],

datasets : [

{

label: "My First dataset",

fillColor : "rgba(220,220,220,0.2)",

strokeColor : "rgba(220,220,220,1)",

pointColor : "rgba(220,220,220,1)",

pointStrokeColor : "#fff",

pointHighlightFill : "#fff",

pointHighlightStroke : "rgba(220,220,220,1)",

data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]

},

{

label: "My Second dataset",

fillColor : "rgba(151,187,205,0.2)",

strokeColor : "rgba(151,187,205,1)",

pointColor : "rgba(151,187,205,1)",

pointStrokeColor : "#fff",

pointHighlightFill : "#fff",

pointHighlightStroke : "rgba(151,187,205,1)",

data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]

}

]

}

var ctx = document.getElementById("canvas").getContext("2d");

window.myLine = new Chart(ctx).Line(lineChartData, {

responsive: true,

onAnimationComplete:function(){

var tcanvas=document.createElement('canvas');

var tctx=tcanvas.getContext('2d');

tcanvas.width=ctx.canvas.width;

tcanvas.height=ctx.canvas.height;

tctx.fillStyle='white';

tctx.fillRect(0,0,tcanvas.width,tcanvas.height);

tctx.drawImage(canvas,0,0);

var img=new Image();

img.οnlοad=function(){

document.body.appendChild(img);

}

img.src=tcanvas.toDataURL();

}

});

ChartJS line chart
Fully opaque chart as image
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值