Настраиваемая логарифмическая шкала для линейного графика
Я как бы застрял с этой проблемой в jpgraph: мне нужно создать диаграмму (линию), которая показывает прогресс пользователей в онлайн-игре с примерно 6000 другими игроками. Таким образом, ось Y показывает позицию пользователя в рейтинге и изменяется от 6000 до 1 (с последней позиции на первую). ось X является временной шкалой.
Итак, во-первых, шкалу оси X нужно перевернуть - нет проблем с документацией.
Но я хотел бы иметь шкалу "вид" логарифмической - значит, я хочу, чтобы значения на оси х были такими: 6000, 5000, 4000, 3000, 2000, 1500, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
Мне уже удалось получить такой масштаб, но чем меньше значения, тем меньше расстояние между метками. - То, что я хочу, - это чтобы на каждой этикетке было одинаковое расстояние. - поэтому на диаграмме шаг от 6000 до 5000 должен занимать столько же места, сколько шаг от 50 до 40 или шаг от 2 до 1.
Надеюсь, я мог бы объяснить это более или менее ясно. Если нет, я добавлю рисунок (я отстой в рисовании), и я уверен, что все поймут, что я имею в виду.
1 ответ
Если представленные значения будут только положительными, то вы можете сделать шкалу отрицательной, чтобы она отображала значения в обратном направлении, JPGraph построен для отображения шкалы в инкрементном порядке, в этом случае вы бы уменьшили значение и сделали отрицательные значения положительными,
Вместо 1,2,3,4,5 у вас будет 5,4,3,2,1, потому что -5,-4,-3,-2,-1,0,+1,+2,+3,+4,+5 (вы бы перевернули это), все что вам нужно сделать, это поменять значения с помощью функции.
function _cb_negate ( $aVal ) {
return round (- $aVal );
}
Затем:
$graph -> xaxis -> SetLabelFormatCallback ( "_cb_negate" );
Для использования журнала вам нужно отсортировать значения от минимального к максимальному в оси x, так как вы не можете использовать отрицательные значения ИЛИ для того, чтобы значения журнала находились в линейной шкале в jpgraph, вам потребуется логарифмический алгоритм для обработки значений, которые вы иметь в массиве и сделать их отрицательными значениями.
Надеюсь, что это работает!
РЕДАКТИРОВАТЬ: Добавлен пример в yaxis, работает также с xaxis: http://www.asial.co.jp/jpgraph/demo/src/Examples/show-example.php?target=inyaxisex1.php