Javascript 生成Y轴上具有时间(AM/PM)的折线图
我需要画一个图表,它的Y轴是“AM/PM”格式的时间 我尝试了不同的可用库,如:。但我不能以am/PM时间显示图表,它只接受十进制值 这是我截取的代码:Javascript 生成Y轴上具有时间(AM/PM)的折线图,javascript,html,twitter-bootstrap,charts,amcharts,Javascript,Html,Twitter Bootstrap,Charts,Amcharts,我需要画一个图表,它的Y轴是“AM/PM”格式的时间 我尝试了不同的可用库,如:。但我不能以am/PM时间显示图表,它只接受十进制值 这是我截取的代码: <!DOCTYPE html> <html lang="en"> <head> <title>Chart example</title> <meta charset="utf-8"> <meta http-equiv="x-ua-compatibl
<!DOCTYPE html>
<html lang="en">
<head>
<title>Chart example</title>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="./js/charts js/amcharts.js"></script>
<script src="https://www.amcharts.com/lib/3/serial.js"></script>
<script src="https://www.amcharts.com/lib/3/themes/light.js"></script>
<script src="https://www.amcharts.com/lib/3/plugins/export/export.min.js">
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
<link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
</head>
<style>
#chartdiv {
width : 100%;
height : 500px;
}
</style>
<!-- Chart code -->
<script>
var chartData = generateChartData();
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"theme": "light",
"legend": {
"useGraphSettings": true
},
"dataProvider": chartData,
"synchronizeGrid":true,
"valueAxes": [{
"id":"v1",
"axisColor": "#FF6600",
"axisThickness": 2,
"axisAlpha": 1,
"position": "left"
}],
"graphs": [{
"valueAxis": "v1",
"lineColor": "blue",
"bullet": "round",
"bulletBorderThickness": 2,
"hideBulletsCount": 30,
"title": "Reports Printing Time",
"valueField": "reportsPrintingTime",
"fillAlphas": 0,
"xField": "dateOfReportGen",
"yField": "timeOfReportGen"
}, {
"valueAxis": "v2",
"lineColor": "#FF6600",
"bullet": "square",
"bulletBorderThickness": 2,
"hideBulletsCount": 30,
"title": "SLA Time",
"valueField": "slaTime",
"fillAlphas": 0
}],
"chartScrollbar": {},
"chartCursor": {
"cursorPosition": "mouse"
},
"categoryField": "date",
"categoryAxis": {
"parseDates": true,
"axisColor": "#DADADA",
"minorGridEnabled": true
},
"export": {
"enabled": true,
"position": "bottom-right"
}
});
chart.addListener("dataUpdated", zoomChart);
zoomChart();
function generateChartData() {
var chartData = [];
var firstDate = new Date();
firstDate.setDate(firstDate.getDate()-10);
var reportsPrintingTime = ['9:30 AM','8:25 AM','11:05 AM','7:45 AM','9:25 AM','8:30 AM','9:10 AM','7:20 AM','9:55 AM','8:42 AM'];
var slaTime = 10;
for (var i = 0; i < 10; i++) {
//JUST FOR GETTING THE NEXT DATE VALUE
var newDate = new Date(firstDate);
newDate.setDate(newDate.getDate() + i);
chartData.push({
date: newDate,
reportsPrintingTime: reportsPrintingTime[i],
slaTime: slaTime
});
}
return chartData;
}
function zoomChart(){
chart.zoomToIndexes(chart.dataProvider.length - 20, chart.dataProvider.length
- 1);
}
</script>
<body>
<div id="chartdiv"></div>
</body>
图表示例
#沙特迪夫{
宽度:100%;
高度:500px;
}
var chartData=generateChartData();
var chart=AmCharts.makeChart(“chartdiv”{
“类型”:“串行”,
“主题”:“光”,
“传奇”:{
“useGraphSettings”:正确
},
“数据提供者”:图表数据,
“synchronizeGrid”:正确,
“价值轴”:[{
“id”:“v1”,
“axisColor”:“FF6600”,
"厚度":二,,
“axisAlpha”:1,
“位置”:“左”
}],
“图表”:[{
“valueAxis”:“v1”,
“线条颜色”:“蓝色”,
“子弹”:“圆形”,
“厚度”:2,
“HidebulletScont”:30,
“标题”:“报告打印时间”,
“valueField”:“reportsPrintingTime”,
“fillAlphas”:0,
“xField”:“dateOfReportGen”,
“yField”:“报告时间”
}, {
“valueAxis”:“v2”,
“lineColor”:“FF6600”,
“子弹”:“方形”,
“厚度”:2,
“HidebulletScont”:30,
“标题”:“SLA时间”,
“valueField”:“slaTime”,
“填充字母”:0
}],
“图表滚动条”:{},
“图表光标”:{
“光标位置”:“鼠标”
},
“类别字段”:“日期”,
“分类法”:{
“parseDates”:正确,
“axisColor”:“DADADA”,
“minorGridEnabled”:真
},
“出口”:{
“启用”:正确,
“位置”:“右下角”
}
});
chart.addListener(“数据更新”,zoomChart);
zoomChart();
函数generateChartData(){
var chartData=[];
var firstDate=新日期();
firstDate.setDate(firstDate.getDate()-10);
var Reporting SprintingTime=['9:30 AM'、'8:25 AM'、'11:05 AM'、'7:45 AM'、'9:25 AM'、'8:30 AM'、'9:10 AM'、'7:20 AM'、'9:55 AM'、'8:42 AM'];
var-slaTime=10;
对于(var i=0;i<10;i++){
//仅用于获取下一个日期值
var newDate=新日期(firstDate);
newDate.setDate(newDate.getDate()+i);
chartData.push({
日期:newDate,
reportsPrintingTime:reportsPrintingTime[i],
slaTime:slaTime
});
}
返回图表数据;
}
函数zoomChart(){
chart.zoomToIndex(chart.dataProvider.length-20,chart.dataProvider.length
- 1);
}
只是想知道是否有人能告诉我这里出了什么问题。有没有更好的方法来实现这一点?非常感谢。您可以在V3中使用以下选项使用AmCharts格式化日期: 考虑到AmCharts正在开发版本4,我还建议您检查一下,以防您想尝试最新版本 有几件事你需要注意: 日期格式 确保已设置与数据中的字符串匹配的字符串。你不需要在那里使用上午/下午的时间。您可以在解析标签时执行此操作 最短期限 默认情况下,
CategoryAxis
最小周期设置为“DD”
。您需要将其更改为“mm”
以显示分钟数
格式化标签
您可以使用CategoyAxis
解析标签,例如:
"labelFunction": function (label, date) {
return AmCharts.formatDate(date, "L:NN A");
}
请检查此示例: