【问题标题】:custom logarithmic scale for line-graph折线图的自定义对数刻度
【发布时间】:2011-09-26 08:26:29
【问题描述】:

我在 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 的步骤一样多的空间。

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

【问题讨论】:

  • 如果有人知道如何使用另一个库(而不是 jpgraph)来实现这一点......

标签: php jpgraph


【解决方案1】:

如果表示的值只会是正值,那么您可以将比例设为负值,以便向后显示值,JPGraph 的构建是为了以增量方式显示比例,在这种情况下,您可以减小值并制作负值正值。

你会得到 5,4,3,2,1 而不是 1,2,3,4,5,因为 -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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2019-01-10
    相关资源
    最近更新 更多