【问题标题】:Chart Js Negative Scale图表 Js 负比例
【发布时间】:2018-02-27 08:09:24
【问题描述】:

我需要以负值开始条形图刻度,我在 2.7.0 版本中使用 Chart Js。

图表必须从 -10 到 100。

图片示例:

有可能吗?

var canvas = document.getElementById('myChart');
var data = {
    labels: ["Test"],
    datasets: [
        {
            label: "-10 to 100",
            backgroundColor: "rgba(255,99,132,0.2)",
            borderColor: "rgba(255,99,132,1)",
            borderWidth: 2,
            hoverBackgroundColor: "rgba(255,99,132,0.4)",
            hoverBorderColor: "rgba(255,99,132,1)",
            data: [100],
        }
    ]
};
var option = {
	scales: {
  	yAxes:[{
    		stacked:true,
        gridLines: {
        	display:true,
          color:"rgba(255,99,132,0.2)"
        }
    }],
    xAxes:[{
    		gridLines: {
        	display:false
        }
    }]
  }
};

var myBarChart = Chart.Bar(canvas,{
	data:data,
  options:option
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.bundle.js"></script>
<canvas id="myChart" width="400" height="200"></canvas>

Jsfiddle:https://jsfiddle.net/LilNawe/Luaf2tm4/636/

【问题讨论】:

    标签: javascript canvas html5-canvas chart.js bar-chart


    【解决方案1】:

    您好,您可以试试这个:您可以通过将对象传递给tick 属性来定义minmax 值。

    更多详情请访问此链接:http://www.chartjs.org/docs/latest/axes/radial/linear.html#tick-options

    var option = {
      scales: {
        yAxes: [
          {
            stacked: true,
            gridLines: {
              display: true,
              color: "rgba(255,99,132,0.2)"
            },
            ticks: {
              suggestedMax: 100,
              suggestedMin: -10
            }
          }
        ],
        xAxes: [
          {
            gridLines: {
              display: false
            }
          }
        ]
      }
    };
    

    【讨论】:

      【解决方案2】:

      您可以使用下面的代码在任何图表 js 图形中设置 y 轴的范围。在本例中,y 轴最小值为 -100,y 轴最大值为 100。

      option: {    
        scales: {
          yAxes: [{
          ticks: { min: -100, max: 100 },
          }], 
        },
      }
      

      但是当使用上面的代码时,刻度(stepSize)/网格线之间的间隙会自动定义。所以你必须像下面这样设置 stepSize 值。在本例中,使用 stepSize 值为 10,您可以看到间距为 10 的网格线。

      option: {    
        scales: {
          yAxes: [{
            ticks: { min: -100, max: 100, stepSize: 10 },
          }], 
        }
      }
      

      所以根据上面的问题,最终的代码将如下所示并给出解释。

      var canvas = document.getElementById("myChart");
      
      var data = {
        labels: ["Test"],
        datasets: [
          {
            label: "-10 to 100",
            backgroundColor: "rgba(255,99,132,0.2)",
            borderColor: "rgba(255,99,132,1)",
            borderWidth: 2,
            hoverBackgroundColor: "rgba(255,99,132,0.4)",
            hoverBorderColor: "rgba(255,99,132,1)",
            data: [100],
          },
        ],
      };
      
      var option = {
        scales: {
          yAxes: [
            {
              ticks: { min: -10, max: 100, stepSize: 10 },
            },
          ],
          xAxes: [
            {
              gridLines: {
                display: false,
              },
            },
          ],
        },
      };
      
      var myBarChart = Chart.Bar(canvas, {
        data: data,
        options: option,
      });
      <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.bundle.js"></script>
      <canvas id="myChart" width="400" height="200"></canvas>

      【讨论】:

        【解决方案3】:

        由于Chart.js v2.9.0,您可以使用floating bars 执行此操作。不能使用语法 [min,max] 指定单个条形图。

        var canvas = document.getElementById('myChart');
        var data = {
            labels: ["Test"],
            datasets: [{
                    label: "-10 to 100",
                    backgroundColor: "rgba(255,99,132,0.2)",
                    borderColor: "rgba(255,99,132,1)",
                    borderWidth: 2,
                    hoverBackgroundColor: "rgba(255,99,132,0.4)",
                    hoverBorderColor: "rgba(255,99,132,1)",
                    data: [[-10, 100]],
                }]
        };
        var option = {
        	scales: {
          	yAxes:[{
                gridLines: {
                  display:true,
                  color:"rgba(255,99,132,0.2)"
                }
            }],
            xAxes:[{
            	gridLines: {
                  display:false
                }
            }]
          }
        };
        
        var myBarChart = Chart.Bar(canvas,{
        	data:data,
            options:option
        });
        <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
        <canvas id="myChart" width="400" height="200"></canvas>

        【讨论】:

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