Javascript Flot折线图时间xaxis系列固定标签
我想创建一个带有时间xaxis系列的flot折线图,它将始终具有固定数量的标签,即6。这6个标签将在3年内每年减半。例如,标签可以是2016年1月、2016年6月、2017年1月、2017年6月、2019年1月、2018年6月。在这里,可以根据当前日期更改年份,但月份是固定的。现在,这些标签基于图表的数据显示。因此,我的数据在2017年1月至2018年7月期间没有任何价值,因为它们没有出现。此外,如果存在单个数据,则不会显示xaxis标签 那么,无论数据是什么,我怎么能在任何时候都有六个标签呢 我附上两个例子。其中一个只有一个值,因此它不会显示xaxis标签,第二个示例有多个点,因此也不会显示所有标签 var flotLineOption={ 系列:{ 线路:{ 秀:没错, 填充:0.01 }, 要点:{ 秀:没错, 半径:4 } }, 网格:{ 边框颜色:“eee”, 边框宽度:1, 悬停:是的, 背景颜色:“FCFC”, 边距:{底部:50} }, 提示:正确, 工具提示:{ 内容:功能标签,x,y{ var objDate=新日期; var yearValue=objDate.getFullYear; objDate=new Datex.setmonthbojdate.getMonth-1; var monthName=new DateobjDate.toLocaleStringen-us,{month:short}; 返回monthName++yearValue+':'+y; } }, xaxis:{ tickColor:‘eee’, 小数点:0, 尺寸:6, 秀:没错, 模式:时间, 时间格式:%b%y, 勾号:[新日期2017,1.getTime,新日期2017,6.getTime,新日期2018,1.getTime,新日期2018,6.getTime,新日期2019,1.getTime,新日期2019,6.getTime] }, 亚克斯:{ 位置:'左', tickColor:‘eee’, 小数点:0 }, 阴影大小:0 }; 函数getData{ var数据=[]; data.push[new Date2017,2.getTime,8] data.push[new Date2017,8.getTime,2] data.push[new Date2018,3.getTime,9] data.push[new Date2018,9.getTime,3] data.push[新日期2019,4.getTime,7] 返回数据; } $function{ $.plot$flotcontainer, [ {data:getData} ], flotLineOption ; $.plot$flotcontainer1, [ {数据:[[new Date2017,4.getTime,7]] ], flotLineOption ; }; 絮状容器{ 宽度:600px; 高度:200px; 文本对齐:居中; 保证金:0自动; } 絮状容器1{ 宽度:600px; 高度:200px; 文本对齐:居中; 保证金:50px自动0自动; }Javascript Flot折线图时间xaxis系列固定标签,javascript,jquery,charts,flot,Javascript,Jquery,Charts,Flot,我想创建一个带有时间xaxis系列的flot折线图,它将始终具有固定数量的标签,即6。这6个标签将在3年内每年减半。例如,标签可以是2016年1月、2016年6月、2017年1月、2017年6月、2019年1月、2018年6月。在这里,可以根据当前日期更改年份,但月份是固定的。现在,这些标签基于图表的数据显示。因此,我的数据在2017年1月至2018年7月期间没有任何价值,因为它们没有出现。此外,如果存在单个数据,则不会显示xaxis标签 那么,无论数据是什么,我怎么能在任何时候都有六个标签呢
Flot在第一个数据点开始图表,在最后一个数据点结束图表。这会导致你的刻度超出图表范围。设置x轴的最小值和最大值以显示所有记号:
xaxis: {
//other options
min: new Date(2017, 1).getTime(),
max: new Date(2019, 6).getTime()
}
var flotLineOption={
系列:{
线路:{
秀:没错,
填充:0.01
},
要点:{
秀:没错,
半径:4
}
},
网格:{
边框颜色:“eee”,
边框宽度:1,
悬停:是的,
背景颜色:“FCFC”,
保证金:{
底数:50
}
},
提示:正确,
工具提示:{
内容:功能标签,x,y{
var objDate=新日期;
var yearValue=objDate.getFullYear;
objDate=new Datex.setmonthbojdate.getMonth-1;
var monthName=new DateobjDate.toLocaleStringen-us{
月份:短
};
返回monthName++yearValue+':'+y;
}
},
xaxis:{
tickColor:‘eee’,
小数点:0,
尺寸:6,
秀:没错,
模式:时间,
时间格式:%b%y,
勾号:[新日期2017,1.getTime,新日期2017,6.getTime,新日期2018,1.getTime,新日期2018,6.getTime,新日期2019,1.getTime,新日期2019,6.getTime],
分钟:新日期2017年1月1日,
马克斯:新日期2019年6月1日
},
亚克斯:{
位置:'左',
tickColor:‘eee’,
小数点:0
},
阴影大小:0
};
函数getData{
var数据=[];
data.push[new Date2017,2.getTime,8]
data.push[new Date2017,8.getTime,2]
data.push[new Date2018,3.getTime,9]
data.push[new Date2018,9.getTime,3]
data.push[新日期2019,4.getTime,7]
返回数据;
}
$function{
$.plot$flotcontainer[{
数据:getData
}],
flotLineOption
;
$.plot$flotcontainer1[{
数据:[
[新日期2017年4月7日]
]
}],
flotLineOption
;
};
絮状容器{
宽度:600px;
高度:200px;
文本对齐:居中;
保证金:0自动;
}
絮状容器1{
宽度:600px;
高度:200px;
文本对齐:居中;
保证金:50px自动0自动;
}
在搜索时,我偶然发现了一个空白。如果将其值设置为偶数0.00001,则显示所有标签。那么,哪种解决方案更好呢?您是对的,autoscaleMargin也可以工作,而且更简单,因为您不必像更改最小/最大值那样更改它。