图表区域背景颜色chartjs

Posted

技术标签:

【中文标题】图表区域背景颜色chartjs【英文标题】:Chart area background color chartjs 【发布时间】:2016-11-24 09:59:44 【问题描述】:

我的图表 js 有问题,我想像上图一样为图表区域着色

我尝试从 charJs Docs 查找配置,但没有匹配项。 是否可以更改图表区域的背景颜色? 如果可能的话,有人可以帮助我吗?

html

<canvas id="barChart"  ></canvas>

javascript

var ctx = document.getElementById("barChart");
var barChart = new Chart(ctx,
  type: 'bar',
  data: 
    labels:["Label1","Label2","Label3","Label4"],
    borderColor : "#fffff",
    datasets: [
      
        data: ["2","3","1","4"],
        borderColor : "#fff",
        borderWidth : "3",
        hoverBorderColor : "#000",
        backgroundColor: [
          "#f38b4a",
          "#56d798",
          "#ff8397",
          "#6970d5" 
        ],
        hoverBackgroundColor: [
          "#f38b4a",
          "#56d798",
          "#ff8397",
          "#6970d5"
        ]
      ]
  ,
  options: 
    scales: 
      yAxes: [
        ticks:
          min : 0,
          stepSize : 1,
          fontColor : "#000",
          fontSize : 14
        ,
        gridLines:
          color: "#000",
          lineWidth:2,
          zeroLineColor :"#000",
          zeroLineWidth : 2
        ,
        stacked: true
      ],
      xAxes: [
        ticks:
          fontColor : "#000",
          fontSize : 14
        ,
        gridLines:
          color: "#fff",
          lineWidth:2
        
      ]
    ,
    responsive:false
  
);

这是我当前的代码jsFiddle

所以每个人都可以尝试寻找解决方案。 感谢您的帮助。

【问题讨论】:

【参考方案1】:

没有改变背景颜色的内置方法,但您可以使用 CSS。 JSFiddle.

ctx.style.backgroundColor = 'rgba(255,0,0,255)';

编辑

如果您想填充图表的确切区域而不是整个 div,您可以编写自己的 chart.js 插件。试试JSFiddle。

        Chart.pluginService.register(
            beforeDraw: function (chart, easing) 
                if (chart.config.options.chartArea && chart.config.options.chartArea.backgroundColor) 
                    var ctx = chart.chart.ctx;
                    var chartArea = chart.chartArea;

                    ctx.save();
                    ctx.fillStyle = chart.config.options.chartArea.backgroundColor;
                    ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
                    ctx.restore();
                
            
        );

        var config = 
  type: 'bar',
  data: 
    labels:["Label1","Label2","Label3","Label4"],
    borderColor : "#fffff",
    datasets: [
      
        data: ["2","3","1","4"],
        borderColor : "#fff",
        borderWidth : "3",
        hoverBorderColor : "#000",
        backgroundColor: [
          "#f38b4a",
          "#56d798",
          "#ff8397",
          "#6970d5" 
        ],
        hoverBackgroundColor: [
          "#f38b4a",
          "#56d798",
          "#ff8397",
          "#6970d5"
        ]
      ]
  ,
  options: 
    scales: 
      yAxes: [
        ticks:
          min : 0,
          stepSize : 1,
          fontColor : "#000",
          fontSize : 14
        ,
        gridLines:
          color: "#000",
          lineWidth:2,
          zeroLineColor :"#000",
          zeroLineWidth : 2
        ,
        stacked: true
      ],
      xAxes: [
        ticks:
          fontColor : "#000",
          fontSize : 14
        ,
        gridLines:
          color: "#fff",
          lineWidth:2
        
      ]
    ,
    responsive:false,
    chartArea: 
        backgroundColor: 'rgba(251, 85, 85, 0.4)'
    
  
;

        var ctx = document.getElementById("barChart").getContext("2d");
        new Chart(ctx, config);

【讨论】:

感谢您的回答,但我只需要在我的问题中像图像一样的图表区域内着色,而不是标签区域 但是为什么yAxis不是从0开始? @PajarFathurrahman。对不起,这是一个错字。这是最终的JSFiddle。 雷达图可以播种吗?不给整个矩形上色,而只给雷达上色? 我有一个相关的问题:***.com/questions/51358701/…。请帮我提个建议。谢谢。【参考方案2】:

根据定义,画布背景是透明的,就像任何元素一样,因此您只需要在画布中定义背景颜色,例如,在您的情况下,您将需要这个 CSS:

JSFiddle

canvas#barChart 
  background-color: #f00;

或HTML内联,以澄清这个想法:

<canvas id="barChart"   style="background-color: #f00;"></canvas>

【讨论】:

这在屏幕上正确显示,但是当右键单击画布并将其复制或保存为图像时,图像背景仍然未设置(透明)。

以上是关于图表区域背景颜色chartjs的主要内容,如果未能解决你的问题,请参考以下文章

使图表的背景在不同区域不同颜色

谷歌图表背景颜色

仅在图形的一个区域上更改背景颜色[重复]

pandas绘图设置背景

加载时的 AnyChart 背景颜色

如何在Google图表库的刻度区域网格中显示颜色