使用 mysql 数据创建条形图
Create bar chart using mysql data
我想使用以JSON格式返回的mysql数据创建栏。
[
{
"Score": "84",
"Trainer": "Jamshaid",
"Subject Name": "Java"
},
{
"Score": "50",
"Trainer": "Zaid",
"Subject Name": "Android"
},
{
"Score": "40",
"Trainer": "Sajjad",
"Subject Name": "iOS"
},
{
"Score": "50",
"Trainer": "Jamshaid",
"Subject Name": "iOS"
}
]
我想像这样创建图表
但问题是这是从表格格式化的。但是我有 JSON 中的数据,如上所示。
这是我关注的链接。我们是否可以将JSON数据转换为格式,以便它可以根据数据填充图表,如图所示
https://blueflame-software.com/bar-chart-with-data-from-mysql-using-highcharts/
您可以在 Javascript 中处理 JSON 以构建图表所需的数据,如下所示:
var jsonFromServer = [
{
"Score": "84",
"Trainer": "Jamshaid",
"Subject Name": "Java"
},
{
"Score": "50",
"Trainer": "Zaid",
"Subject Name": "Android"
},
{
"Score": "40",
"Trainer": "Sajjad",
"Subject Name": "iOS"
},
{
"Score": "50",
"Trainer": "Jamshaid",
"Subject Name": "iOS"
}
];
以上是变量中捕获的来自服务器的数据
以下代码可帮助您从 JSON 响应中提取 Y 轴值(即唯一的主题名称):
function getSubjects(){
var subjectsMap = {};
$.each(jsonFromServer, function(index, value){
if(!subjectsMap[value['Subject Name']]){
subjectsMap[value['Subject Name']] = 1;
}
});
return $.map(subjectsMap, function(index, val){ return val; });
}
然后我们需要提取不同学科中每个培训师的分数,其形式应该是:[{name: "Trainer", data: []}] 其中数据是主题中的分数数组,其顺序应与 Y 轴数据中出现的主题顺序相同。可以使用以下代码实现:
function getTrainers(){
var trainersMap = {};
$.each(jsonFromServer, function(index, value){
if(!trainersMap[value['Trainer']]){
trainersMap[value['Trainer']] = 1;
}
});
return $.map(trainersMap, function(index, val){ return val; });
}
function getMarks(){
var subjects = getSubjects();
var trainers= getTrainers();
var marks = {};
//initialize the trainers scores in all subjects to 0
$.each(trainers, function(index, trainer){
if ( !marks[trainer]){
marks[trainer] = {};
}
$.each(subjects, function(idx2, sub){
marks[trainer][sub] = 0;
});
});
//now populate with the actual values obtained from server
$.each(subjects, function(idx2, sub){
$.each(jsonFromServer, function(index, value){
var trainer = value['Trainer'];
var subName = value['Subject Name'];
var score = value['Score'];
if ( sub == subName){
marks[trainer][sub] = score;
}
});
});
//now format the marks object into the format required for highcharts
//i.e an array of object with properties [{name: "", data:[]}]
return $.map(marks, function(val, index){
var scoreArray = [];
$.each(val, function(index, score){
scoreArray.push(parseInt(score));
});
return {"name": index, "data": scoreArray};
});
}
工作代码可以在这里的小提琴中找到。
相关文章:
- 从数组在d3中创建条形图时出现问题
- 如何从Mysql,php创建一个活动和动态的条形图
- 使用 mysql 数据创建条形图
- 在 AS3 和 HTML5 中创建 3D 条形图
- 如何在 d3.js 中创建分层条形图
- 创建 Jquery 条形图
- 为每个项目创建具有不同系列数的多系列条形图
- 如何在拉斐尔js中创建堆叠条形图
- 如何为ipad网络应用程序创建HTML5条形图
- 如何创建一个可以调用的函数,以使用JQplot显示多个条形图
- 如何使用 json 数据在 d3.js 中创建垂直分组的条形图
- 使用 D3 创建具有复杂数据集的灵活条形图
- D3 分组条形图创建问题
- Highcharts-如何创建流条形图
- 使用D3创建多尺度、嵌套、有序的条形图
- 使用c3js为相同的json数据创建组合图(线条和条形图)
- 如何使用开源图表API在jsp页面中创建可钻取的条形图
- 使用相同的数据集创建Plottable.js堆叠条形图
- js从对象中的值创建堆叠条形图
- 如何使用javascript创建一个简单的条形图