Question

below is my jp graph code

            include_once ("jpgraph/jpgraph.php");
            include_once ("jpgraph/jpgraph_scatter.php");

            // Some data for the points
            $datax = array(3.5,13.7,3,4,6.2,6,3.5,8,14,8,11.1,13.7);
            $datay = array(10,22,12,13,17,20,16,19,30,31,40,43);

            // A new scatter graph
            $graph = new Graph(300,200,'auto');
            $graph->SetShadow();
            $graph->SetScale("linlin");

            //$graph->img->SetMargin(40,40,40,40);        

            $graph->title->Set("Scatter plot with Image Map");
            $graph->title->SetFont(FF_FONT1,FS_BOLD);

            // Client side image map targets
            $targ=array("pie_csimex1.php#1","pie_csimex1.php#2","pie_csimex1.php#3",
            "pie_csimex1.php#4","pie_csimex1.php#5","pie_csimex1.php#6",
            "pie_csimex1.php#7","pie_csimex1.php#8","pie_csimex1.php#9" );

            // Strings to put as "alts" (and "title" value)
            $alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");

            // Create a new scatter plot
            $sp1 = new ScatterPlot($datay,$datax);

            // Use diamonds as markerss
            $sp1->mark->SetType(MARK_DIAMOND);
            $sp1->mark->SetWidth(10);

            // Set the scatter plot image map targets
            $sp1->SetCSIMTargets($targ,$alts);

            // Add the plot
            $graph->Add($sp1);

            // Send back the HTML page which will call this script again
            // to retrieve the image.
            $graph->StrokeCSIM();

above code works fine by displaying the scattered graph... but i want to embed some php code in the same page ,if i do that it does not work.... as per some expert's advice i replaced $graph->StrokeCSIM();

with `$fileName = "./lang/12345.png"; $graph->img->Stream($fileName);

            echo('<img src="./lang/12345.png" />');`

it creates a file with 12345.png and does not display graph... how can i fix this?

updated question with code....

            $_GET['Variance']=$Variance;
            $_GET['Emp_RecFactor']=$Emp_RecFactor;


            // Some data for the points
            $datax =$Emp_RecFactor;
            $datay =$Variance;



            // A new scatter graph
            $graph = new Graph(600,600);
            $graph->SetScale('intlin',-10,10,0,100);
            $graph->yscale->ticks->Set(1);
            $graph->xscale->ticks->Set(5);

            //$graph->img->SetMargin(40,40,40,40);        

             $graph->xaxis->title->Set("Reco-Factor");
            $graph->yaxis->title->Set("Variance");
            $graph->title->Set("Equity Graph Of All Employees");
            $graph->title->SetFont(FF_FONT1,FS_BOLD);

            // Client side image map targets
            $targ=array("pie_csimex1.php#1","pie_csimex1.php#2","pie_csimex1.php#3",
            "pie_csimex1.php#4","pie_csimex1.php#5","pie_csimex1.php#6",
            "pie_csimex1.php#7","pie_csimex1.php#8","pie_csimex1.php#9" );

            // Strings to put as "alts" (and "title" value)
            $alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");

            // Create a new scatter plot
            $sp1 = new ScatterPlot($datay,$datax);

            // Use diamonds as markerss
            $sp1->mark->SetType(MARK_DIAMOND);
            $sp1->mark->SetWidth(10);

            // Set the scatter plot image map targets
            $sp1->SetCSIMTargets($targ,$alts);

            // Add the plot
            $graph->Add($sp1);

            // Send back the HTML page which will call this script again
            // to retrieve the image.



            $graph->Strokecsim();

test2.php contains...

            echo "<p>hello</p>";
            include "Talent_Graphcopy.php"; // containing the graph code
            echo "<p>goodbye</p>";
Was it helpful?

Solution

$graph->StrokeCSIM() produces a graph in the form of an image map. The PHP that contains this code (lets call it the graph script) is capable of generating both the supporting HTML and the graph image itself.

When the graph script is called without parameters (e.g. http://contoso.com/graph.php), HTML is generated. The HTML generated contains an IMG tag that points to the script itself with a magic parameter (e.g. <img src="graph.php?_jpg_csimd=1" ). When the script is called with the magic parameter, an image is generated.

You cannot put in PHP code that produces HTML output into the graph script as it will prevent the image generation functionality from working correctly. If you want to mix your custom HTML with the graph output, you can include the graph script in another PHP script.

e.g. Display.php

echo "<p>hello</p>";
include "Talent_Graphcopy.php"; // containing the graph code
echo "<p>goodbye</p>";

Talent_Graphcopy.php

// fancy graph code...
$graph->StrokeCSIM("Talent_Graphcopy.php"); 

Specify the name of the graph script as an argument for StrokeCSIM. It tells the script to set the IMG SRC to point to the graph script itself for generating the graph. If you do not specify it, the IMG SRC will point to Display.php... which is wrong, because the browser will ask Display.php for the image, which it is obviously not capable of providing.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top