0

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

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

这是我的情节的演示

试着更好地解释一下自己。

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

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'
        }
    })
}
4

1 回答 1

0

在您的函数 createplot1 中,我将最大值:x_date2[300] 更改为最大值:x_date2[200]。我随机选择了这个数字来查看效果,现在它可以按照您的意愿工作。

于 2013-03-21T22:16:37.760 回答