angular - 从 hashmap 获取数据到 highcharts
问题描述
我是角度和图表的新手,所以我选择使用 highcharts,我有这个服务返回一个哈希图,我想将值放入我想要的垂直条中,所以使用这种方式用来自服务的动态数据替换静态数据:
chart = new Chart({
chart: {
type: 'column'
},
title: {
text: 'errors'
},
credits: {
enabled: false
},
series: [{
name: 'Population',
data: this.data,
}]
})
这是我在 ngOnInit 中的服务:
this.dashboardHttpService.exceptionsByMicroseviceDaily().subscribe(success=> {
this.data=Object(success);
console.log(this.data);
})
我没有结果,请问高图表的垂直条如何与 hashmap 一起使用
编辑:
这是console.log(this.data)
呈现的内容:
{Timeout: 180, ClientHandler: 307, Transport: 199, UnknownHost: 127, Reflections: 140}
ClientHandler:307
反射:140
超时:180
传输:199
UnknownHost:127
这就是我放在我的 html 页面上的内容:
仪表板.component.html
<div class="content"> <div [chart]="chart"></div>
静态数据一切正常,因此没有依赖或配置丢失或类似的东西。
解决方案
图表不起作用的原因是series
当您将动态分配给图表时,您将如下所示this.data
:
series: [{
name: 'Population',
data: [Timeout: 180, ClientHandler: 307, Transport: 199, UnknownHost: 127, Reflections: 140]
}]
这是不正确的格式series
。格式应为以下两种之一:
将所有数据点绘制为一个
series [{ name: 'Population', data:[180, 307, 199, 127, 140] }]
将所有数据点绘制为每个名称的系列
series [{ name: 'Timeout', data: [180] }, { name: 'ClientHandler', data: [307] }, { ... }]
因此,您需要编写一个循环,将响应划分为上述格式之一。看到您的图表结构,我认为您正在寻找第二种方法。
我做了一个简单for-loop
的从对象中提取数据用于演示目的:
var testdata = {Timeout: 180, ClientHandler: 307, Transport: 199, UnknownHost: 127, Reflections: 140}
var chartdata = []
var i = 0;
Object.keys(testdata).forEach(function(key) {
chartdata[i++] = {name: key, data: [testdata[key]]};
});
在此循环之后,chartdata
将如下所示:
[{ name: 'Timeout', data: [180] }, { name: 'ClientHandler', data: [307] }, { ... }]
剩下的就是将代码从series
接受chartdata
整个系列对象:
series: chartdata
该图表将起作用。
在这里,您可以找到一个非常简单的 JSFiddle 来展示这一点。
推荐阅读
- javascript - 如何在 javascript 中执行 for 循环语句?
- android - 有人知道 ikvStockChart 中的 Entry 构造函数中的参数是什么吗?“entrySet.addEntry(新条目(?));”
- java - 圣经独特的单词计数器瓶颈
- javascript - 为什么内部函数中的变量在log后声明的内部函数中有相同的变量名时返回nan
- markdown - 如何使用 gist markdown 嵌入 Google-CSE?
- windows - 用于断点和延迟的无人值守 WinDbg 脚本
- android - 如何读取android studio中不可用的手机的mac地址
- woocommerce - 简码显示 WooCommerce 产品变化下拉列表
- matlab - 从 MATLAB 中的字符数组生成所有可能的子集
- java - 如果对象满足某些条件,则从 Map 中删除条目