2010-11-15 89 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; 
相關問題