Один из способов, который не особенно чист и особенно не будет работать хорошо, если вы планируете показывать метки тиков по осям X и Y, - это установить параметр labelMargin
на grid
к отрицательному значению.
var plot = $.plot(placeholder, data, {
...
grid: { ..., labelMargin: -20, ... }
...
});
Вторая идея может состоять в том, чтобы получить все div
, которые имеют class="tickLabel"
после того, как график был нарисован. А затем «вручную» изменить их позиционирование CSS.
$("div.tickLabel").each(function(i,ele) {
ele = $(ele);
if (ele.css("text-align") == "center") { //x-axis
ele.css("top", ele.position().top - 20); //move them up over graph
} else { //y-axis
ele.css("left", ele.position().left + 20); //move them right over graph
}
});
Конечно, это все еще имеет некоторые проблемы, так как самые низкие значения меток тиков на осях X и Y будут перекрывать друг друга, а самые низкие / самые высокие значения меток тиков на осях X и Y будут располагаться по краям. графика. Но с некоторой тонкой настройкой это может быть жизнеспособным решением.
Третья идея состоит в том, чтобы напрямую использовать tickFormatter
для меток тиков по осям X и Y. Это работает аналогично второй идее, но размещает их непосредственно там, где вы хотите, чтобы они были, без, возможно, заметного «мерцания метки» при изменении положения, которое может произойти с функцией во второй идее.
var plot = $.plot(placeholder, data, {
...
xaxis: {
...,
tickFormatter: function formatter(val, axis) {
//return appropriately absolute positioned element
}
},
...
});
Как может выглядеть эта tickFormatter
функция, лучше всего получить из исходного кода jQuery Flot , особенно функции measureLabels
(это дает вам представление о том, как сам Flot позиционирует метки тиков) и форматировщик тиков по умолчанию, который выглядит как
function (v, axis) {
return v.toFixed(axis.tickDecimals);
};