我正在使用以下代码在jqPlot
中显示一组条形图。但是,我遇到了两个问题:
xaxis的范围值两侧都没有填充。 pad属性似乎没有效果。
当条的数量很大时,条重叠在彼此之上。 barPadding属性似乎没有效果。
我查看了此链接Having problems with jqPlot bar chart。答案建议使用CategoryAxisRenderer
。但由于我使用的是时间序列数据,因此我需要DateAxisRenderer
。
请帮忙。
function plotBarGraph(data,myticks,series)
{
$("#placeholder").empty();
$.jqplot('placeholder',data,
{
//stackSeries:true,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
barMargin:1,
barPadding:0.5
},
axes:
{
xaxis:
{
ticks:myticks,
tickInterval:10,
renderer:$.jqplot.DateAxisRenderer,
pad:2.5,
tickOptions:
{
formatString:'%d-%m-%y'
}
}
},
legend:
{
show:true,
labels:series
}
});
}
答案 0 :(得分:1)
在这种情况下,如果您不想使用链接中提到的方法,您可能希望使用日期轴的最小值/最大值。
我想你也可能找到有用的the approach to a similar sort of problem with padding,我选择在创建时设置刻度并在绘制绘图后隐藏不需要的刻度。
在我得到任何进一步的帮助之前,请提供一个展示您问题的样本。
答案 1 :(得分:0)
对于你的第二个问题,我遇到了类似的问题。我设置了一个选择语句,根据其中的条形数量扩大了我的图表的大小。然后我使父div可滚动(称为“dataHolder”),这解决了问题。
// set div properties depending on how many sets of data are in the
//array so the view is sized properly
$("#chartDiv").html("").css("width", "750px"); // chartDiv's default settings
$("#tabs-6").removeClass("dataHolder").css("width", "900px"); // parent Div's default settings
if (dataArray.length > 10) {
$("#chartDiv").css("width", "1600px");
$("#tabs-6").addClass("dataHolder").css("width", "900px");
} else if (dataArray.length > 6) {
$("#chartDiv").css("width", "1200px");
$("#tabs-6").addClass("dataHolder").css("width", "900px");
}
答案 2 :(得分:0)
我找到了一个使用DateAxisRenderer的Date数据的解决方案。您必须配置de xaxis,如下所示:
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
rendererOptions: {
tickRenderer: $.jqplot.DateTickRenderer,
tickOptions: {
formatter: $.jqplot.DateTickFormatter,
formatString:'%d/%m'
}
}
}
}
我希望它有所帮助! ;)