jqPlot DateAxisRenderer tickInterval问题

时间:2013-03-21 21:33:24

标签: javascript jquery jqplot

我使用jqPlot来说明一些时间序列数据。同时,我有一个下拉菜单控制x轴的刻度间隔(时间轴)。刻度间隔可以动态更改,但最后一个刻度总是超出范围。

例如,我的x轴上限为Dec 1 1961,起始日期为Jan 2 1961,间隔为3 month。然后轴上的最后一个刻度是Jan 2 1962,而不是实际的上限。所以我的问题是如何使得滴答间隔仅在x轴边界内工作(比如在外推之前与上限进行比较)。谢谢!

这是我的情节demo

尝试更好地解释自己。

  1. x轴上的最后一个数字应该是最后一个元素 数组x_date2 [300]。如果第一个日期之间的差异 x_date [0]和最后一个可以除以tick interval的值, 一切都很好。
  2. 如果不是,除了作为上限的最后一个元素,间隔 其他滴答之间应该由下拉滴答间隔控制 选择。
  3. JS:

    var x_water = [data are available on JSFIDDLE]
    var x_date2 = [data are available on JSFIDDLE]
    var x_date2_len = x_date2.length;
    var paired = [];
    
    for (var i = 0; i <= x_date2_len; i += 1) {
        paired.push([x_date2[i], x_water[i]]);
    }
    
    $('#calc1').click(function (range_interval) {
        var range_interval = $("#display_interval_1").val();
        createplot1(range_interval);
    });
    
    function createplot1(range_interval) {
        $.jqplot.config.enablePlugins = true;
        $('#chart1').empty();
        $.jqplot('chart1', [paired], {
            seriesDefaults: {
                showMarker: false,
                pointLabels: {
                    show: false
                }
            },
            series: [{
                label: 'Water Concentrations'
            }],
            axes: {
                xaxis: {
                    renderer: $.jqplot.DateAxisRenderer,
                    tickRenderer: $.jqplot.CanvasAxisTickRenderer,
                    tickOptions: {
                        formatString: '%#m/%#d/%Y',
                        angle: -30
                    },
                    min: x_date2[0],
                    max: x_date2[300],
                    tickInterval: range_interval,
                    label: 'Date',
                    pad: 0
                },
                yaxis: {
                    label: 'Water Total (μg/L)',
                    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
                    pad: 0
                }
            },
            legend: {
                show: true,
                location: 'nw',
                placement: 'inside',
                fontSize: '11px'
            }
        })
    }
    

1 个答案:

答案 0 :(得分:0)

在你的函数createplot1中,我将max:x_date2 [300]更改为max:x_date2 [200]。我随机选择了这个数字以查看效果,现在它可以按你想要的方式工作。