Highcharts x-Achse

Hallo,

vielleicht habt Ihr eine Idee.
Highcharts entscheidet selber wann es an der X-Achse Uhrzeiten oder Tage/Monate anzeigt. Ich hab mir eine Wochenansicht (7Tage) gebastelt. In diesem Zeitraum steht unten aber immer 00:00 und 12:00. erst ab einem Zeitraum von 11 Tagen erscheint dort zb. „3.März“.
Wie kann ich diese 11 Tage Grenze auf 7 runtersetzen?

Danke für Eure Hilfe.

cu…

Hi McFly,

die Parameter für die x-Achse hatte ich auch mal beschraubt, habe aber nur eine statische Änderung hinbekommen. Über die HC-Optionen kannst Du Dir mal anschauen, was die parameter bedeuten und ein bischen probieren.
die Diagramme mit dieser Zeitachse (unten) sehen bei mir so aus: klick
(ich glaube mich zu erinnern, das „step“ sie Schrittweite der Skalenbeschriftung ist und „tickintervall“ die Skalenteilung)


xAxis: [{
        type: 'datetime',
        labels: {
            step: 5
        },
         dateTimeLabelFormats:
          {
                second: '%H:%M:%S',
                minute: '%H:%M',
                hour: '%H:%M',
                day: '%e. %b',
                week: '%e. %b',
                month: '%b \'%y',
                year: '%Y'
            },
         min: %xAxis.min%,
            max: %xAxis.max%,
            allowDecimals: true,
         tickInterval: 1*24*3600*1000 // 1Tag x 24 Std. x 3600 sek x 1000ms,
         
       }] ,

Danke,

damit hat es geklappt.
Ich hab Dein Script etwas erweitert:

function GetDefaultStringForCfgFile()
	{
		return
			"credits: {
				enabled: false
			},

			exporting: {
				buttons: {
					printButton: {
						enabled: false
					}
				}
			},
			chart: {
				renderTo: 'container',
				zoomType: 'xy'
			},
			title: {
				text: '%title.text%',
				x: -20
			},
			subtitle: {
				text: 'Zeitraum: %subtitle.text%',
				x: -20
			},
			xAxis: [{
				type: 'datetime',
				 dateTimeLabelFormats: { second: '%H:%M:%S',
					minute: '%H:%M',
					hour: '%H:%M',
					day: '%a.(%e.%m.)',
					week: '%e. %b',
					month: '%b \'%y',
					year: '%Y'

				 },
				min: %xAxis.min%,
				max: %xAxis.max%,
				allowDecimals: false,
				%xAxis.tickinterval%
			}],
			yAxis: [	%yAxis% ],
			tooltip: { %tooltip% },
			series: [ %data% ]
		});";
	}

und hier:

// ersetzen der Platzhalter
		$StringForCfgFile = str_replace("%title.text%", $CfgDaten["Title"], $StringForCfgFile);
		$StringForCfgFile = str_replace("%subtitle.text%", $CfgDaten["SubTitle"], $StringForCfgFile);
		$StringForCfgFile = str_replace("%data%", $Data, $StringForCfgFile);
		$StringForCfgFile = str_replace("%tooltip%", $TooltipString, $StringForCfgFile);
		$StringForCfgFile = str_replace("%yAxis%", $yAxisString, $StringForCfgFile);
		$StringForCfgFile = str_replace("%xAxis.min%", CreateDateUTC($CfgDaten["StartTime"] - 5*60) , $StringForCfgFile);
		$StringForCfgFile = str_replace("%xAxis.max%", CreateDateUTC($CfgDaten["EndTime"] + 5*60), $StringForCfgFile);
		// X-Achsen Tickintervall setzen
		// Interval prefix
		$zeitraum = $CfgDaten["EndTime"] - $CfgDaten["StartTime"];
		$interval = "tickInterval: ";
		if ($zeitraum <= (1 * 3600)) // Innerhalb einer Stunde
		   $interval .= "10*60*1000"; // alle 10 Minuten ein Tick
		elseif($zeitraum <= (1*24*3600)) // innerhalb eines Tages
		   $interval .= "60*60*1000"; // alle 60 Minuten ein Tick
		elseif($zeitraum <= (7*24*3600)) // innerhalb einer Woche
		   $interval .= "1*24*3600*1000";   // alle 24 Stunden ein Tick
		elseif($zeitraum <= (31*24*3600))   // innerhalb eines Monats
		   $interval .= "2*24*3600*1000"; // alle 48 Stunden ein Tick
		else                             // sonst
		   $interval = "";
		
		$StringForCfgFile = str_replace("%xAxis.tickinterval%", $interval, $StringForCfgFile);

So kann man das ganze ganz gut steuern.

ja prima, da verneige ich mich angesichts der Innovation (ich hätts nicht auf die Schnelle hinbekommen) :wink:

Jetzt stellt sich die Frage, wie man das in den KHC-Entwicklungsstrang bekommt. Mittlerweile geistern so viele Codeschnipsel rum - ich hab die Übwersicht längst verloren.

Hallo zusammen,

ich habe ebenfalls das Problem mit der X-Achse,
der Chart mit eurer Lösung sieht top aus und so habe ich mir das auch vorgstellet.
Könnt Ihr mir sagen wo ich die Codeschnipsel jetzt wo einsetzten muss?
Brauch ich noch irgendwelche Variablen etc.

Würde mich über eure Hilfe freuen.

Hallo Kiter11,

ich habs bei mir so hinbekommen:

$CfgDaten['xAxis']['dateTimeLabelFormats']['day'] =    '%d. %b';
$CfgDaten['xAxis']['tickInterval'] = 24*3600*1000;} // 1Tag: 24 Std. x 3600 sek x 1000ms

Mit einer Auswahl des Zeitraums so:

    If ($ZeitRaum > 30)
        {$CfgDaten['xAxis']['dateTimeLabelFormats']['month'] =    '%B %Y';
        $CfgDaten['xAxis']['tickInterval'] = 24*3600*30*1000;} // 30 Tage: 24 Std. x 3600 sek x 1000ms  x 30
    else
        {$CfgDaten['xAxis']['dateTimeLabelFormats']['day'] =    '%d. %b';
        $CfgDaten['xAxis']['tickInterval'] = 24*3600*1000;} // 1Tag: 24 Std. x 3600 sek x 1000ms