2010-11-15 93 views
0

哇,这个虽然!如何查找LOG图形的Y轴上的值的百分比?

我试图在PHP中找到相对于Y轴的值的百分比。如果我们参考此图:http://en.wikipedia.org/wiki/Semi-log_graph(2009年甲型流感爆发),假设我想要查看图表上的%是“256”值。

从表面上看,很容易:比1/3或33%多一点。如果我们看一下1024的值,它大约是Y轴高度的50%。 131072将是100%。

那么我该如何计算这与PHP?

让我们看看这个图,并取X = 0天,Y = 256.什么是Y的256%?

非常感谢任何人可以计算出这件宝贝:)

回答

2
percent = 100 * (log(y) - log(y1))/(log(y2) - log(y1)) 

其中

y = value 
y1 = smallest value in y-axis 
y2 = largest value in y-axis. 

y1 = 1.0那么可以简化这里给出其他答案(因为日志(1)=定义0)

percent = 100 * log(y)/log(y2) 

请注意,并非所有日志图表有1.0作为最低值。

+0

哇哇! Awsome,非常感谢您的帮助 – Joel 2010-11-15 16:32:25

0

LN(131072)= 11.783 100%

LN(1024)= 6.931的58.824%

在PHP

,该功能被称为log()

无需设置基准,因为您正在将它们分开以找到相对值。

+0

再象这里mosts职位时的最低值不等于1.0此落入陷阱。看到我的帖子上面的**完整**答案。 – ja72 2010-11-15 16:37:41

+0

我不同意。那么接下来呢?我们会为此而战吗?这个评论的理由是什么? – AlexanderMP 2010-11-15 16:42:36

0

亚历克斯得到它,但概括为您和​​PHPize

logPercent = log(x)/log(top) * 100; 
0

如果你把你最大的y值的(131072你的情况)的日志和您的Y值(256)的日志,最后得到一个高度和ay值,它与你绘制的轴线成线性关系。你可以将它们分开,得到高度和时间的十进制数为100:

使用log base 2,因为它给出了整数(尽管任何基数都应该没问题)。

log(256)/log(131072) = 8/17 = 0.47 = 47% 

在PHP:

(log(256, 2)/log(131072, 2))*100; 
相关问题