3

この質問とまったく同じですが、賛成票を投じるほどの評判がない(そして答えられない)ので、もう一度質問する必要があります...

次のようなグラフが与えられた場合、グラフが空であっても、ティックを常に整数にするにはどうすればよいですか? 現時点では、グラフにデータがない場合は に0, 0.2, 0.4, 0.6, 0.8, 1.0なりますが、このグラフのコンテキストでは意味がありません。表示されるのは整数のみです。関連する数値が非常に小さい場合、1.0, 1.5, 2.0, 2.5, 3.0, 3.5(など) のように表示されることがありますが、これも理想的ではありません。グラフは 1 日の間に発生したことを表すため、毎日ゼロから始まり、ゆっくりと成長し、翌日にはゼロにリセットされます。理想的には、目盛りを から開始し0, 1, 2, 3, 4, 5、データに合わせて適切にスケーリングしたいと考えています。

助言がありますか?tickInterval: 1X 軸と Y 軸の両方で(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
    }
)

この基本的なアプローチは、任意の整数に対して機能します。float を使用していて、それらが 1 より大きい場合でも、「series_max」を int にキャストすることで、このアプローチを使用できます。1 未満の float を使用している場合、このアプローチは適していない可能性があります。y 軸の最大値として常に 1 が選択されます。

于 2013-03-27T15:47:18.090 に答える