hh:mm 格式的 flot 饼图数据
flot pie chart data with hh:mm format
我有 h:m 格式的 flot 饼图数据。
通常情况下,如果我按以下格式提供数据,它会正确显示饼图
var data = [
{label: "data1", data:10},
{label: "data2", data: 20},
];
但是如果我直接使用 hh:mm 格式而不是 int/double 提供数据,我什么也得不到
var data = [
{label: "data1", data:10:30},
{label: "data2", data: 20:20},
];
我的问题 没有将 h:m 转换为普通的 int/double 值有没有其他方法可以在我的 flot 饼图中显示 h:m?
如果没有那么哪种转换会更好?
Flot 无法自动理解您的时间值,您必须将它们转换为例如分钟。然后,您可以使用 labelFormatter 函数以原始格式显示饼图切片的值。像这样:
$(function () {
var data = [{
label: "data1",
data: '10:30'
}, {
label: "data2",
data: '20:20'
},
];
for (var i = 0; i < data.length; i++) {
var hours = parseInt(data[i].data.split(':')[0]);
var minutes = parseInt(data[i].data.split(':')[1]);
data[i].data = hours * 60 + minutes;
}
var plot = $.plot("#placeholder", data, {
series: {
pie: {
show: true,
label: {
radius: 0.5,
formatter: labelFormatter
}
}
},
grid: {
hoverable: true,
autoHighlight: true
},
legend: {
show: false
}
});
function labelFormatter(label, series) {
var value = Math.floor(series.data[0][1] / 60) + ':' + (series.data[0][1] % 60);
return "<div style='font-size:10pt; text-align:center; padding:2px; color:black;'>" + label + "<br/>" + Math.round(series.percent) + "%<br />" + value + "</div>";
}
});
完整示例请参阅此 fiddle。
我有 h:m 格式的 flot 饼图数据。
通常情况下,如果我按以下格式提供数据,它会正确显示饼图
var data = [
{label: "data1", data:10},
{label: "data2", data: 20},
];
但是如果我直接使用 hh:mm 格式而不是 int/double 提供数据,我什么也得不到
var data = [
{label: "data1", data:10:30},
{label: "data2", data: 20:20},
];
我的问题 没有将 h:m 转换为普通的 int/double 值有没有其他方法可以在我的 flot 饼图中显示 h:m?
如果没有那么哪种转换会更好?
Flot 无法自动理解您的时间值,您必须将它们转换为例如分钟。然后,您可以使用 labelFormatter 函数以原始格式显示饼图切片的值。像这样:
$(function () {
var data = [{
label: "data1",
data: '10:30'
}, {
label: "data2",
data: '20:20'
},
];
for (var i = 0; i < data.length; i++) {
var hours = parseInt(data[i].data.split(':')[0]);
var minutes = parseInt(data[i].data.split(':')[1]);
data[i].data = hours * 60 + minutes;
}
var plot = $.plot("#placeholder", data, {
series: {
pie: {
show: true,
label: {
radius: 0.5,
formatter: labelFormatter
}
}
},
grid: {
hoverable: true,
autoHighlight: true
},
legend: {
show: false
}
});
function labelFormatter(label, series) {
var value = Math.floor(series.data[0][1] / 60) + ':' + (series.data[0][1] % 60);
return "<div style='font-size:10pt; text-align:center; padding:2px; color:black;'>" + label + "<br/>" + Math.round(series.percent) + "%<br />" + value + "</div>";
}
});
完整示例请参阅此 fiddle。