2

我在 jpgraph 中遇到了这个问题:我需要创建一个图表(线),显示用户在大约 6000 名其他玩家的在线游戏中的进度。所以 y 轴显示了用户在排名中的位置,从 6000 到 1(最后一个位置到第一个位置)。x 轴是时间线。

因此,首先,需要反转 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 的步骤一样多的空间。

希望我能或多或少清楚地解释它。如果不是,我会添加一幅画(我画得很烂),我相信每个人都会明白我的意思。

4

1 回答 1

0

如果表示的值只会是正值,那么您可以将比例设为负值,以便向后显示值,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" );

对于日志使用,您需要在 xaxis 中从最低到最高对值进行排序,因为您不能使用负值或者日志值在 jpgraph 中处于线性比例中,您需要使用对数算法来处理您的值有在数组中并使它们成为负值。

希望它有效!

编辑:在 yaxis 中添加示例,也适用于 xaxis:http ://www.asial.co.jp/jpgraph/demo/src/Examples/show-example.php?target=inyaxisex1.php

于 2014-08-25T17:45:51.623 回答