jqPlot-显示条形图的问题 - 轴填充和条间距离

时间:2012-06-12 09:11:06

标签: axis padding jqplot

我正在使用以下代码在jqPlot中显示一组条形图。但是,我遇到了两个问题:

  1. xaxis的范围值两侧都没有填充。 pad属性似乎没有效果。

  2. 当条的数量很大时,条重叠在彼此之上。 barPadding属性似乎没有效果。

  3. 我查看了此链接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
                                }     
                });
    }
    

3 个答案:

答案 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'
                }
            }
        }
    }

我希望它有所帮助! ;)