By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,851 Members | 1,095 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,851 IT Pros & Developers. It's quick & easy.

Logarithmic scale

P: n/a
Hi Is there a way to find a proper distance between large numbers.

For example, if i have a set of numbers like:
10, 40, 80, 100, 500, 10000
Now if I have to create a break points between these no.
I have to take an average & add that average to the starting number
like.
(10000 -10)/6 = 1665.
Now if I create a break point using this no. the break points will be:
10 - 1675, 1675 - 3340, 3340 - 5005, 5005 - 6670 ....
But the problem is that I can't use them as they are far apart like
all the first 5 no.'s will be in the first breakpoint, so its no help.

Can I use a formula like logarithmic scale in javascript to calculate
the breakpoint that are based on logarithmic scale.
Sep 25 '08 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Sunny <su**********@gmail.comwrites:
Hi Is there a way to find a proper distance between large numbers.

For example, if i have a set of numbers like:
10, 40, 80, 100, 500, 10000
Now if I have to create a break points between these no.
I have to take an average & add that average to the starting number
like.
(10000 -10)/6 = 1665.
Now if I create a break point using this no. the break points will be:
10 - 1675, 1675 - 3340, 3340 - 5005, 5005 - 6670 ....
But the problem is that I can't use them as they are far apart like
all the first 5 no.'s will be in the first breakpoint, so its no help.

Can I use a formula like logarithmic scale in javascript to calculate
the breakpoint that are based on logarithmic scale.
You can use logarithms in javascript. See Math.log:

http://developer.mozilla.org/En/Core...jects:Math:log

I have no idea what you mean by break points or what you're trying to
do. It looks like you just want to split an ordered list in two, sort of:

x = Math.ceil(list.length / 2)
break_point = (list[x] - list[x+1]) / 2

If that doesn't help, please explain further.

--
Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/
Sep 25 '08 #2

P: n/a
Joost Diepenmaat <jo***@zeekat.nlwrites:
x = Math.ceil(list.length / 2)
break_point = (list[x] - list[x+1]) / 2
I meant Math.floor()

--
Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/
Sep 25 '08 #3

P: n/a
On Sep 25, 3:47 pm, Joost Diepenmaat <jo...@zeekat.nlwrote:
Joost Diepenmaat <jo...@zeekat.nlwrites:
x = Math.ceil(list.length / 2)
break_point = (list[x] - list[x+1]) / 2

I meant Math.floor()

--
Joost Diepenmaat | blog:http://joost.zeekat.nl/| work:http://zeekat.nl/
I have a series of numbers that i want to display on graph.
Numbers are like 10, 40, 80, 100, 500, 10000, 100000. there are 50
numbers
Like the last column has value that is really higher.
Here users can break this numbers into groups.
But when I take the average using the no. of groups they want (100000
-10)/6 = 16665.
so the groups come out 10 - 16665.
Now if i have to display this data on chart.
all the 30 points come under group 10 - 16665 & couple of groups
remain empty like 1ike no value exists in them because the difference
between the lowest & highest element is too big(10,100000). So I want
a method that computes an average or create groups based on logic.
Sep 25 '08 #4

P: n/a
"Sunny" <su**********@gmail.com>
I have a series of numbers that i want to display on graph.
Numbers are like 10, 40, 80, 100, 500, 10000, 100000. there are 50
numbers
Like the last column has value that is really higher.
Here users can break this numbers into groups.
But when I take the average using the no. of groups they want (100000
-10)/6 = 16665.
so the groups come out 10 - 16665.
Now if i have to display this data on chart.
all the 30 points come under group 10 - 16665 & couple of groups
remain empty like 1ike no value exists in them because the difference
between the lowest & highest element is too big(10,100000). So I want
a method that computes an average or create groups based on logic.
First take the log (as said by JD, see Math; remember that 10-base log(x) =
ln(x)/ln(10) ) of all points into a new series.
Do your groupings with this new series and display.
The y-axis will now run from say -0.3 to 4.2. Round these min and max values
down resp up to -1 and 5.
Display the axis where you transform the values y to 10^y (e.g. 0.1, 1, 10,
100, 1000, 10000).

Tom
Sep 25 '08 #5

P: n/a
Sunny wrote:
Hi Is there a way to find a proper distance between large numbers.
alt.homework is elsewhere. You do yourself no favor at all by not doing
your homework by yourself. Trust me.
PointedEars
--
Prototype.js was written by people who don't know javascript for people
who don't know javascript. People who don't know javascript are not
the best source of advice on designing systems that use javascript.
-- Richard Cornford, cljs, <f8*******************@news.demon.co.uk>
Sep 26 '08 #6

P: n/a
On 25 sep, 21:15, Sunny <sunnyluth...@gmail.comwrote:
Hi Is there a way to find a proper distance between large numbers.

For example, if i have a set of numbers like:
10, 40, 80, 100, 500, 10000
Now if I have to create a break points between these no.
I have to take an average & add that average to the starting number
like.
(10000 -10)/6 = 1665.
Now if I create a break point using this no. the break points will be:
10 - 1675, 1675 - 3340, 3340 - 5005, 5005 - 6670 ....
I do see all these evaluate to -1665, but I don't understand what you
further mean. I really think you should rephrase the problem in a
clearer way. Anyway, I think your algorithm would go like this:

var nrs = [10, 40, 80, 100, 500, 10000];
var breakpoints = new Array();
var f = (nrs[nrs.length-1] - nrs[0]) / nrs.length;
for (var i=0; i<nrs.length; i++)
breakpoints[i] = i * f - ((i+1) * f);
document.write(breakpoints); // -1665 for every entry
[...]
Now if i have to display this data on chart.
Line chart:
http://code.google.com/apis/chart/#line_charts

var nrs = [10, 40, 80, 100, 500, 10000];
document.write('<img src="http://chart.apis.google.com/chart?'
+ 'chxt=y'
+ '&chxl=0:|0|'
+ nrs[nrs.length-1]/2 + '|' + nrs[nrs.length-1]
+ '&chs=400x400'
+ '&cht=lc'
+ '&chds=0,' + nrs[nrs.length-1]
+ '&chd=t:' + nrs
+ '">');

Pie chart:
http://code.google.com/apis/chart/#pie_charts

var nrs = [10, 40, 80, 100, 500, 10000];
var perc = new Array();
var sum = 0;
for (var i=0; i<nrs.length; i++)
sum += nrs[i];
for (var j=0; j<nrs.length; j++)
perc[j] = nrs[j] / sum;
document.write('<img src="http://chart.apis.google.com/chart?'
+'chs=750x300'
+ '&chd=t:' + perc
+ '&cht=p3'
+ '&chl=' + nrs.join('|')
+ '">');

Hope this helps,

--
Bart
Sep 28 '08 #7

This discussion thread is closed

Replies have been disabled for this discussion.