Velocity Reviews

Velocity Reviews (
-   Java (
-   -   Graphing: Converting Values to Co-ordinates (

morc 03-21-2006 06:35 PM

Graphing: Converting Values to Co-ordinates
I've made a dynamic graphing system using java.awt. The values on the
y-axis are dynmacilay generated from the database. Like so :

public void scaleYAxis(Graphics g,String ticker){
double high = getHigh(ticker);
double low = getLow(ticker);
high = Math.round(high*10000.0)/10000.0;
low = Math.round(low*10000.0)/10000.0;

double increment = (high-low)/4;
double tenPer = high*0.10;

// System.out.println("high:"+high+" low:"+low+" tenPer:"+tenPer+"

double zero = Math.round((low-increment)*10000.0)/10000.0;
double second = Math.round((low+increment)*10000.0)/10000.0;
double third = Math.round((second+increment)*10000.0)/10000.0;
double fourth = Math.round((third+increment)*10000.0)/10000.0;
double fifth = Math.round((fourth+increment)*10000.0)/10000.0;

//System.out.println("zero:"+zero+" first:"+low+" second:"+second+"
third:"+third+" fourth:"+fourth+" fifth:"+fifth);


Now i need help devising a formula for a seperate function in which it
takes the value from the db and converts it to coordinates ont ehs cale
in the right spot.
I hope i made sense
Any suggestions are greatly appreciated.
Thanks in adavance

Dave Mandelin 03-21-2006 11:36 PM

Re: Graphing: Converting Values to Co-ordinates
I assume 'high' and 'low' are the max and min numeric values, and you
want to know how to convert some other numeric value to a pixel value?
Let y0 be the pixel value for 'low' and y1 the pixel value for 'high'.
Then for value v, the proportional pixel value yv is given by:

(v-low) / (high-low) = (yv - y0) / (y1-y0)

Solving for yv,

yv = y0 + (v - low) * (y1-y0) / (high - low)

morc 03-22-2006 03:58 PM

Re: Graphing: Converting Values to Co-ordinates
thanks... sounds like u know what ur talking about
however im not sure how i would put that in a function

would you mind giving me an example?

thanks alot

Dave Mandelin 03-22-2006 09:49 PM

Re: Graphing: Converting Values to Co-ordinates
I took 'high' and 'low' from your variable names, so I think those map
in directly. I think for you, y0 and y1, the pixel positions of your
axis, are 100 and 300, but I would recommend putting those in variables
for maintainability. So maybe something like this, which draws a small
circle at the right place:

int yp0 = 100; // Pixel value of bottom of y axis
int yp1 = 300; // Pixel value of top of y axis

int radius = 2; // Radius of little circle marking point

void plotValue(Graphics g, int xp, int value) {
int yp = yp0 + (value - low) * (yp1-yp0) / (high - low);
g.drawOval(xp-radius, yp-radius, radius*2+1, radius*2+1);

All times are GMT. The time now is 09:06 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.