与this question完全相同,但由于我没有声誉支持(并且无法回答),我将不得不再次提出问题......
如下图所示,即使图形为空,如何强制刻度始终为整数?目前,如果图表没有数据,它将会显示0, 0.2, 0.4, 0.6, 0.8, 1.0
,但在此图的上下文中,这没有任何意义 - 显示的内容只能包含整数。如果涉及的数字非常小,它偶尔会显示为例如1.0, 1.5, 2.0, 2.5, 3.0, 3.5
(等),这也是不理想的。由于图表表示在一天中发生的事情,它将从每天零开始并缓慢增长,第二天重置为零。理想情况下,我希望刻度线从0, 1, 2, 3, 4, 5
开始,然后根据数据进行适当缩放。
有什么建议吗?我在X轴和Y轴上都试过了tickInterval: 1
(以及5
和50
...),但这似乎没有做任何事......也许是一个错误JQPlot?
编辑:JSFiddle Example显示问题。
$.jqplot('chartdiv', [ data.a, data.b ], {
title : "Title",
stackSeries : true,
seriesDefaults : {
renderer : $.jqplot.BarRenderer,
rendererOptions : {
barMargin : 15,
barDirection : 'horizontal'
},
pointLabels : {
show : true,
stackedValue : false
},
},
seriesColors : [ "#651811", "#126542" ],
axesDefaults : {
tickRenderer : $.jqplot.CanvasAxisTickRenderer,
tickOptions : {
fontSize : '8pt'
}
},
axes : {
xaxis : {
label : "X-Label",
},
yaxis : {
renderer : $.jqplot.CategoryAxisRenderer,
ticks : [ "T1", "T2", "T3", "T4" ],
tickOptions : {
angle : -75
},
label : "Y-Label",
labelRenderer : $.jqplot.CanvasAxisLabelRenderer,
labelOptions : {
angle : -90
},
}
},
highlighter : {
show : false,
showTooltip : false,
},
legend : {
show : true,
location : 'e',
placement : 'outside',
labels : [ 'L1', 'L2' ]
}
});
答案 0 :(得分:0)
您可以更好地设置轴的最大值和最小值,然后让JQPlot填写刻度值。
// This is YOUR data set
var series = [882, 38, 66, 522, 123, 400, 777];
var max;
if (series.length > 0) {
// Instead of letting JQPlot pick the scale on the y-axis, let's figure out our own.
var series_max = Math.max.apply(null, series);
var digits = max.toString().length;
var scale = Math.pow(10, max_digits - 1);
max = (Math.ceil(series_max / scale)) * scale;
} else {
// Since you sometimes have an empty dataset, then just pick an arbitrary max.
max = 10;
}
$.jqplot(
'foo',
[series],
{
axes: {
yaxis: {
min: 0,
max: max
}
}
// Put your other config stuff here
}
)
这种基本方法适用于任何整数。如果您使用浮点数并且它们大于1,您仍然可以通过将“series_max”转换为int来使用此方法。如果使用小于1的浮点数,则此方法可能不合适:它将始终选择1作为y轴最大值。