jpgraph: Liniendiagramm -> Markieren von Werten auf der X-Achse

  • Themenstarter Themenstarter MerlinGT
  • Beginndatum Beginndatum
M

MerlinGT

Hi,

ich habe mittels jpgraph diverse Liniendiagramme erstellt. Die Liniendiagramme inkl. Achsenbeschriftung sind vollständig vorhanden.
Innerhalb dieser Liniendiagramme möchte ich jetzt einzelne Werte auf der X-Achse besonders hervorheben. Dies könnte bspw. durch vertikale Linien an den passenden Stellen geschehen, oder durch ganz schlichte Markierungen auf der Achse selbst. Von mir aus können die Werte auch umrahmt werden. Wichtig dabei ist nur, dass die speziellen Werte dem betrachter sofort ins Auge springen.
Leider habe ich keine Ahnung, wie ich das umsetzen könnte.

Letztendlich sollen 3 verschiedene Punkte pro Diagramm markiert werden, aber auch wirklich nur die Punkte und keine Bereiche.
Für Vorschläge und Hilfe wäre ich dankbar.
 
Hallo,

du könntest ein weiteres Diagramm erzeugen in welchem die 3 Punkte auf deine gewünschte Art und Weise dargestellt werden und anschließend beide Graphen "joinen". Alle anderen Punkte (also alle außer den 3en) des zweiten Graphen könnte man eventuell auf 0 setzen. Ich hatte das Joinen mal in einem kleinen Test fabriziert und das sieht dann so aus:
PHP:
$xaxis = array(
			'Jan 2006', 'Feb 2006', 'Mae 2006', 'Apr 2006',
			'Mai 2006', 'Jun 2006', 'Jul 2006', 'Aug 2006',
			'Sep 2006', 'Okt 2006', 'Nov 2006', 'Dez 2006',
		);
		
		$visits = array(
			4000, 4332, 3654, 6932,
			7323, 8945, 10234, 8432,
			0, 0, 0, 0
		);
		// max visits
		$tmp = $visits;
		rsort($tmp);
		reset($tmp);
		$max_visits = $tmp[0];
		
		$leads = array(
			400, 380, 340, 600,
			620, 700, 900, 1100,
		);

		

		// Create the graph. These two calls are always required
		$graph = new Graph(450,300, "auto", 5);
		
		// set frame around
		$graph->SetFrame(true,'silver',1);

		// set y scale tick size
		$graph->SetScale('textlin',0,$max_visits);
		
		// set background
		$graph->SetBackgroundGradient('white:0.98', 'white', GRAD_HOR,BGRAD_MARGIN);
		
		// Set major tick dist to 40 and minor to 20 
		#$graph->yaxis->scale->ticks->Set($max_visits/20,$max_visits/40); 
		// without minor ticks
		$graph->yaxis->scale->ticks->Set($max_visits/18);
		
		// dotted grid
		$graph->ygrid->SetLineStyle('dashed');
		
		// show minor grid to
		$graph->ygrid->Show(true, true); 
		
		// colors of both grids
		$graph->ygrid->SetColor(array(132,130,132));
		
		#$graph->SetShadow();
		$graph->img->SetMargin(60,40,10,60);
		
		// Create the bar plots
		
		// barplot 1...
		$b1plot = new BarPlot($visits);
		// Setup color for gradient fill style 
		$b1plot->SetFillGradient("orange:1.1","orange:0.8",GRAD_VER);
		#$b1plot->SetFillColor("orange");
		$b1plot->SetWidth(0.85);
		
		// barplot 2...
		$b2plot = new BarPlot($leads);
		$b2plot->SetFillGradient('steelblue:1.3', 'steelblue:0.8',GRAD_VER);
		#$b2plot->SetFillColor("blue");
		$b2plot->SetWidth(0.85);
		
		// Create the grouped bar plot
		$gbplot = new GroupBarPlot(array($b1plot,$b2plot));
		
		// ...and add both to the graPH
		#$graph->Add($gbplot);
		$graph->Add($b1plot);
		$graph->Add($b2plot);
		
		// other stuff ....
		#$graph->title->Set("Vists/ Leads 2006");
		#$graph->xaxis->title->Set("X-title");
		$graph->xaxis->SetTickLabels($xaxis);
		$graph->xaxis->SetLabelAngle(90);
		$graph->xaxis->SetFont(FF_FONT1); 
		
		$graph->yaxis->title->Set("Visits/ Leads");
		#$graph->yaxis->SetTickLabels($visits);
		$graph->yaxis->SetFont(FF_FONT1);
		$graph->yaxis->SetTitleMargin(40); 
		
		$graph->title->SetFont(FF_FONT1,FS_BOLD);
		$graph->yaxis->title->SetFont(FF_FONT1,FS_NORMAL, 8);
		$graph->xaxis->title->SetFont(FF_FONT1,FS_NORMAL, 8);
		
		// Display the graph
		$graph->Stroke();

Vielleicht konnte ich dir ja helfen - vieleicht aber auch nicht :)

cu Robert
 
Zurück