3

与这个问题完全相同,但由于我没有支持它的声誉(并且无法回答),我将不得不再次问它......

给定如下图,即使图为空,如何强制刻度始终为整数?目前,如果该图没有数据,它将消失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(和5... 50),但这似乎没有做任何事情......也许是 JQPlot 中的一个错误?

编辑:显示问题的JSFiddle 示例

$.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' ]
    }
});
4

1 回答 1

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

于 2013-03-27T15:47:18.090 回答