Jump to content

Archived

This topic is now archived and is closed to further replies.

kopander

graph scaling and interaction help

Recommended Posts

Hi

I'm using php and gd library to plot integer points into a graph. I'm new to this and having some troubles. I'm trying to scale the graph according to how many records there are in the database table. There will be hundreds of records in the table. So far I only seem to be able to get it by just making the x-axis bigger and not scaling the entire graph. Any one have any ideas, directions I should look at? The code 'should' be attached below:

[code]
<?php
include "db.php"; //Database connection

$query=mysql_query("select KOL from small"); //Query database
$num = mysql_num_rows ($query); // Number of records

header ("Content-type: image/jpg");

$x_gap=$num-($num/3); // The gap between each point in y axis
$x_max=$x_gap*(2+$num); // Maximum width of the graph or horizontal axis
$y_max=250; // Maximum  hight of the graph or vertical axis

$im = @ImageCreate ($x_max, $y_max);
//Allocated Colours
$background_color = ImageColorAllocate ($im, 234, 234, 234);
$text_color = ImageColorAllocate ($im, 233, 14, 91);
$graph_color = ImageColorAllocate ($im,25,25,25);

//Set initial variables
$x1=0;
$y1=0;

    while($nt=mysql_fetch_array($query)){
        $x2=$x1+$x_gap; // Shifting in X axis
        $y2=($y_max/2)-$nt[0]; // Coordinate of Y axis
        //Draw the points
        imagefilledellipse($im, $x2, $y2, 4, 4, $graph_color);
        //Print values on graph
        ImageString($im,2,$x2,$y2,$nt[0],$graph_color);
        // Storing the value for next draw       
        $x1=$x2;
        $y1=$y2;}
       
ImageJPEG ($im);
?>
[/code]

Also, is there any way to make the plotted points interactive? Is that possible? How would I go about making the points pressable, and have the records data displayed for example? Any help would be greatly appreciated.


Thanks!

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.