【发布时间】:2018-12-04 03:36:21
【问题描述】:
我的堆积条形图如下所示
<canvas baseChart
[datasets]="barChartData"
[labels]="barChartLabels"
[options]="barChartOptions"
[legend]="barChartLegend"
[chartType]="barChartType"
(chartHover)="chartHovered($event)"
(chartClick)="chartClicked($event)"></canvas>
</div>
我已经看到了替换特定数据数组的示例。这也适用于我。但是,就我而言,我想替换整个数据集。它在我的代码中的外观是:
this.barChartData = [{"data":[3,0,0,0],"label":"dialog"},{"data":[16199,0,0,0],"label":"AtkBBBFuseFeedsFrontPage"},{"data":[52799,0,0,0],"label":"SandboxHover"},{"data":[11343,0,0,0],"label":"ManageSandboxes"}]
this.chart.chart.data.datasets = this.barChartData
this.chart.chart.data.labels = ["session1","session2","session3", "session4"]
this.chart.chart.update()
但是,这不起作用。而且chart根本不渲染上面的数据。
另外,如果我像下面那样在初始化时放入相同的数据,那么它就可以正常工作。所以这不是数据的问题。
import { BaseChartDirective } from 'ng2-charts'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
@ViewChild(BaseChartDirective)
public chart: BaseChartDirective;
public barChartOptions:any = {
scaleShowVerticalLines: false,
responsive: true,
scales: {
xAxes: [{ stacked: true }],
yAxes: [{ stacked: true }]
}
};
public barChartLabels:string[] = ["session1", "session2", "session3", "session4"];
public barChartType:string = 'bar';
public barChartLegend:boolean = true;
public barChartData:any[] = [{"data":[3,0,0,0],"label":"dialog"},{"data":[16199,0,0,0],"label":"AtkBBBFuseFeedsFrontPage"},{"data":[52799,0,0,0],"label":"SandboxHover"},{"data":[11343,0,0,0],"label":"ManageSandboxes"}]
旧数据:
public barChartData:any[] = [{data:[0,0,0,0],label:"dialog"},
{data:[0,0,0,0],label:"AtkBBBFuseFeedsFrontPage"},
{data:[0,0,0,0],label:"SandboxHover"},
{data:[0,0,0,0],label:"ManageSandboxes"}]
新数据
this.barChartData = [{"data":[3,0,0,0],"label":"dialog"},{"data":[16199,0,0,0],"label":"AtkBBBFuseFeedsFrontPage"},{"data":[52799,0,0,0],"label":"SandboxHover"},{"data":[11343,0,0,0],"label":"ManageSandboxes"}]
【问题讨论】:
-
你能发布你的完整代码吗?
-
添加了更多相关部分。没有别的了。
-
控制台是否抛出任何错误..??其实你不需要做chart.chart.datasets = this.barChartData。假设您需要在单击按钮时刷新它。如果您分配 this.barChartData = [your new whole data objects here],则单击该按钮,但在示例中我看到您的数据是相同的,所以这可能是您没有看到任何变化的原因用户界面
-
简单分配不起作用。我已经试过了
标签: javascript angular chart.js chart.js2