Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angular – 尝试在ng2图表中设置图表的大小大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试设置图表的大小.

我已将条形图的ng2-chart示例复制并粘贴到我的打字稿文件中.

如果我玩画布:

<canvas baseChart width="100" height="100">

尺寸似乎没有发生.它总是拉伸到MAX.

如果我添加一些样式:

canvas {
      width: 50px;
      height: 50px;
    }

它也被拉伸到MAX.

似乎图表正在某种iFrame中显示,这让我更加困惑.

有关如何设置图表大小的任何帮助?

我的代码

import {Component,OnInit} from '@angular/core';
@Component({
    SELEctor: 'bar-chart-component',template: `
<div class="row">
  <div class="col-md-6">
    <div style="display: block;">
    <canvas baseChart width="100" height="100"
                [datasets]="lineChartData"
                [labels]="lineChartLabels"
                [options]="lineChartOptions"
                [colors]="lineChartColors"
                [legend]="lineChartLegend"
                [chartType]="lineChartType"
                (chartHover)="chartHovered($event)"
                (chartClick)="chartClicked($event)"></canvas>
    </div>
  </div>
  <div class="col-md-6" style="margin-bottom: 10px">
    <table class="table table-responsive table-condensed">
      <tr>
        <th *ngFor="let label of lineChartLabels">{{label}}</th>
      </tr>
      <tr *ngFor="let d of lineChartData">
        <td *ngFor="let label of lineChartLabels; let j=index">{{d && d.data[j]}}</td>
      </tr>
    </table>
    <button (click)="randomize()">CLICK</button>
  </div>
</div>
  `,styles: [`
        canvas {
          width: 50px;
          height: 50px;
        }
`]
})
export class BarChartComponent implements OnInit {

    ngOnInit(): void {
    }

    // lineChart
    public lineChartData: Array<any> = [
        {data: [65,59,80,81,56,55,40],label: 'Series A'},{data: [28,48,40,19,86,27,90],label: 'Series B'},{data: [18,77,9,100,label: 'Series C'}
    ];
    public lineChartLabels: Array<any> = ['January','February','March','April','May','June','July'];
    public lineChartOptions: any = {
        responsive: true
    };
    public lineChartColors: Array<any> = [
        { // grey
            BACkgroundColor: 'rgba(148,159,177,0.2)',borderColor: 'rgba(148,1)',pointBACkgroundColor: 'rgba(148,pointBorderColor: '#fff',pointHoverBACkgroundColor: '#fff',pointHoverBorderColor: 'rgba(148,0.8)'
        },{ // dark grey
            BACkgroundColor: 'rgba(77,83,96,borderColor: 'rgba(77,pointBACkgroundColor: 'rgba(77,pointHoverBorderColor: 'rgba(77,1)'
        },{ // grey
            BACkgroundColor: 'rgba(148,0.8)'
        }
    ];
    public lineChartLegend: Boolean = true;
    public lineChartType: String = 'line';

    public randomize(): void {
        let _lineChartData: Array<any> = new Array(this.lineChartData.length);
        for (let i = 0; i < this.lineChartData.length; i++) {
            _lineChartData[i] = {
                data: new Array(this.lineChartData[i].data.length),label: this.lineChartData[i].label
            };
            for (let j = 0; j < this.lineChartData[i].data.length; j++) {
                _lineChartData[i].data[j] = Math.floor((Math.random() * 100) + 1);
            }
        }
        this.lineChartData = _lineChartData;
    }

    // events
    public chartClicked(e: any): void {
        console.log(E);
    }

    public chartHovered(e: any): void {
        console.log(E);
    }
}
通过在选项中设置responsive:true和maintainAspectRatio:false,它允许使用CSS调整画布大小,并且不会扭曲或拉伸图表中的文本.
public lineChartOptions: any = {
    responsive: true,maintainAspectRatio: false
};

如果您通过javascript更改css,则需要强制重绘图表.

有两种方法可以做到这一点:

this.lineChartData = this.lineChartData.slice();

要么

import { Chart } from "chart.js";
...
var ctx = this.chart.ctx;
var chart = this.chart;
var myChart = new Chart(ctx,chart);
myChart.resize();

您可以忽略创建的iframe对象.它不占用任何可见空间.

大佬总结

以上是大佬教程为你收集整理的angular – 尝试在ng2图表中设置图表的大小全部内容,希望文章能够帮你解决angular – 尝试在ng2图表中设置图表的大小所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。