强制刻度为整数

时间:2012-09-03 04:43:36

标签: jqplot

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(以及550 ...),但这似乎没有做任何事......也许是一个错误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' ]
    }
});

1 个答案:

答案 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轴最大值。