[Gelöst] TChart Probleme mit mehreren Achsen.

Rund um die LCL und andere Komponenten
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Welche Lazarus-Version hast du denn? Bei mir (trunk) stürzt nichts ab.
Version: 1.5 dann Update ich sie mal wieder, vielleicht wurde der Fehler behoben.
Die Intervals.NiceSteps bezeichnen Vorzugswerte, auf die die Achsenlabels gerundet werden sollen. "0.1|0.2|0.5" heißt, dass die Labels, je nach Dekade, 1, 2 oder 5 sind (also auch 0.001, 0.002, 0.005 oder 10, 20, 50). Weil bei der Labelberechnung aber Kompromisse eingegangen werden müssen, können auch andere Werte auftauchen.
Ist mir aufgefallen. Z.b. bei der Temperatur wurde mit 2er Schritten gearbeitet, ich hätte aber gerne 5 Schritte.
Der Chart zeichnet deine Daten -> schau dir mal deine Daten-Datei an bzw. prüfe deinen TFLDateContainer. Am Chart liegt's bestimmt nicht.
Die Daten sind Inordnung. Sonst würde ja auch die andere Werte "komisch" aussehen. Ich werde mir die Daten aber noch mal ansehen.
Kann schon sein. Aber ein mehrachsiges Diagramm, wenn man mit der Software nicht vertraut ist, gehört auch nicht zu den leichtesten Übungen, mit keiner Software. Da musst du durch - hinterher wundert man sich, warum man es nicht gleich verstanden hat.
Wenn es leicht, wäre, wäre es auch zu Langweilig.
Mag sein, ich würde vieles anders machen, habe bereits angefangen. Habe auch schon eine Kurve Zeichnen könne, habe nur noch Probleme, die Kurve an der Richtigen Stelle zu Zeichnen bzw. zu Platzieren. Im Prinzip muss ich sie nur noch verschieben.

Ich halte mir immer gerne mehrere Möglichkeiten offen.
Das ganze möchte ich in meinem WebSocketServer einbauen, daher ist die TChart vielleicht nicht unbedingt gut geeignet, weil der Server ist eine Hintergrund Anwendung, die ohne die LCL auskommen soll, aber ich wollte mal mit der Komponente "Arbeiten"

Tut mir leid, aber Lazarus hat User auf der ganzen Welt, und es ist Zeitverschwendung, irgendetwas auf Deutsch zu dokumentieren. Hast du schon mal Google-Translate o. ä. probiert?
Der Text der daraus kommt, ist Blödsinn.
Aber wenn du ernsthaft programmieren willst, kann ich dir nur raten, Englisch zu lernen.
Das sagt sich so Leicht. Etwas Englisch kann ich, aber das reicht bei weiten nicht um mit der TChart zu Arbeiten.

Immer wieder sehe ich im Internet, dass User um Deutsche Tutorials Fragen. Ich bin also nicht alleine.
Da hat meine Demo einen Fehler: In der Achsenzuordnung (AxisIndexX, AxisIndexY) der LineSeries1 sind x und y Achse vertauscht.
Ist mir aufgefallen und habe es korrigiert.

Erst einmal vielen Dank für deine Hilfe und deinen Wertvollen Informationen.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Ich habe gerade mein Lazarus von 1.5 auf 1.7 SVN Version gebracht, der Fehler scheint nicht mehr aufzutreten, ist aber das wird die Zeit zeigen.
Nun sind sogar die OI Dialoge auf Deutsch.

Was den Luftdruck angeht: Nun, ich habe mir mir die Roh-Daten noch mal angesehen, ein Wert ist sehr ungünstig.

Code: Alles auswählen

 
1009
1102
1102
1103
1104
1105
1105
1106
1107
1107
1107
1116
1107
1116
1116
1106
1106
1105
1104
1103
1102
1101
1101
 
Ich frage mich ob das an de Einteilung von der Y-Scaler liegt?
MFG
Michael Springwald

wp_xyz
Beiträge: 5154
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Probleme mit mehreren Achsen.

Beitrag von wp_xyz »

pluto hat geschrieben:bei der Temperatur wurde mit 2er Schritten gearbeitet, ich hätte aber gerne 5 Schritte.
Wenn man bestimmte Vorstellungen zur Achsenbeschriftung hab, ist die automatische Beschriftung sehr störrisch. Ich setze in diesem Fall eine TListChartSource aufs Formular, in der ich die Werte mit den Beschriftungen per Code eintrage:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
const
  Tmin = -30;
  Tmax = 50;
var
  i: Integer;
  T: Double;
begin
  // ListChartSource mit Werten in 5-er Schritten für die Temperatur-Achsenbeschriftung füllen
  // Grenzen großzügig aufweiten, damit es auch bei anderen Daten noch passt
  T := Tmin;
  while T <= Tmax do begin
    ListChartSource1.Add(T, T, IntToStr(round(T)));
    T := T + 5;
  end;
end;
Die ListChartSource dann der Eigenschaft "Source" der Axis.Marks zuweisen und Axis.Marks.Style auf smsLabel setzen. Dann hast du zu Laufzeit (nicht zur Designzeit) Labels in 5er-Schritten. Aber Achtung: Beim Zoomen werden keine Zwischenwerte mehr eingefügt!
pluto hat geschrieben:Ich frage mich ob das an de Einteilung von der Y-Scaler liegt?
Wieso? Der Chart entspricht genau deinen Daten, 1009 ist der unterste Wert auf der Druck-Achse. Nochmals: Schau dir die DataContainer-Routinen an, in der Originaldatei, die du mitgeschickt hat, stehen in der Druckspalte nur Werte zwischen 1007 und 1012 (nicht bis 1116!)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Das mit TListChartSource werde ich ausprobieren.

Das ist mir auch aufgefallen.

Du meinst, also der Sprung den man sehen kann ist "Richtig"? Auch wenn das irgendwie Falsch aussieht?
MFG
Michael Springwald

wp_xyz
Beiträge: 5154
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Probleme mit mehreren Achsen.

Beitrag von wp_xyz »

Nochmal: Es werden exakt deine Daten gezeichnet. Wenn der Chart falsche Daten zeigt, ist nicht der Chart fehlerhaft, sondern die Daten. Schau dir die Original-Datei an und vergleiche mit den Zahlen zwei Postings höher!

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Ich denke inzwischen, es liegt daran, dass ich die Werte pro Stunde Zusammenfasse, also die Durchschnittswerte nehme.
Hast du noch eine Idee, wie man das "Problem" anders lösen könnte?

Ich möchte halt nicht jeden Wert da stellen, habe ca pro Stunde 12 Messungen. Ich möchte eher pro Stunde ein Wert.

Ich werde mir mal die Werte in LibreOffice Einfügen und mal schauen, wie es da aussieht um ein Vergleich zu haben.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Hier mal das Diagramm in LibrOffice, ist sieht ganz Ähnlich aus, nur nicht so "Steil".
Dateianhänge
LibreOfficeChart.png
MFG
Michael Springwald

wp_xyz
Beiträge: 5154
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Probleme mit mehreren Achsen.

Beitrag von wp_xyz »

Nimmst du dieselbe Datei, die dem Source-Code weiter oben beigefügt hast (2015-12-25.txt)? Wie kommen dann 1100er-Werte in die LibreOffice-Spalte? Wenn die Einzelwerte zwischen 1008 und 1015 liegen, kann der Mittelwert nicht größer als 1100 werden.
nur nicht so "Steil".
In dem LibreOffice-Diagramm ist ja auch das Achsenminimum kleiner als bei TAChart.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Ich nehme die Datei, die ich dir gegeben habe und lese sie ein und Fasse jede Stunde zusammen und bilde den Durchschnittswert pro Stunde, Pro Wert.

Die Werte scheinen nicht zu Stimmen. Die sind zu Hoch...

Code: Alles auswählen

 if (H <> OldHour) and (OnlyHour) then begin
                  Data.Hum_in:=Data.Hum_in / z;
                  Data.Temp_in:=Data.Temp_in / z;
                  Data.Hum_out:=Data.Hum_out / z;
                  Data.Temp_out:=Data.Temp_out / z;
                  Data.Abs_pressure:=Data.Abs_pressure / z;
 
                  Min_Temp_In:=Min_Temp_In;
                  Min_Temp_Out:=Min_Temp_Out;
                  Max_Temp_In:=Max_Temp_In;
                  Max_Temp_Out:=Max_Temp_Out;
                  Max_Hum_Out:=Max_Hum_Out;
//                  max_
                  z:=0;
                  if OnlyHour then begin
                    Data:=Add();
                  end;
                end
                else begin
                  z:=z+1;
                end;
Die Datei habe ich dir geben, dass ist ein Auszug aus der Methode: TPLDataContainer.LoadFromFile
Weiter Unten werden die Werte hoch gezählt.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Der Z Wert wird jetzt mit 1 Installisiert:

Code: Alles auswählen

    Data.Hum_in:=Data.Hum_in / z;
                  Data.Temp_in:=Data.Temp_in / z;
                  Data.Hum_out:=Data.Hum_out / z;
                  Data.Temp_out:=Data.Temp_out / z;
                  if Data.Abs_pressure / z <=1000.0 then z:=z-1;
                  Data.Abs_pressure:=Data.Abs_pressure / z;
 
                  Min_Temp_In:=Min_Temp_In;
                  Min_Temp_Out:=Min_Temp_Out;
                  Max_Temp_In:=Max_Temp_In;
                  Max_Temp_Out:=Max_Temp_Out;
                  Max_Hum_Out:=Max_Hum_Out;
//                  max_
                  z:=1;
                  Data:=Add();
                end
                else begin
                  z:=z+1;
                end;
Im Anhang gibt es ein Bild, wie es jetzt aussieht. Irgendwie sieht es recht Komisch aus.
Dateianhänge
Chart1.png
MFG
Michael Springwald

wp_xyz
Beiträge: 5154
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Probleme mit mehreren Achsen.

Beitrag von wp_xyz »

Lade die Datei in LibreOffice und berechne die Stundenmittelwerte manuell, dann weißt du, was rauskommen soll. Für mich sieht das Diagramm viel vernünftiger aus als der bisherige.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Ich finde, der Anstieg und das Gefälle sind sehr Auffällig aus.

Das mit den Manuellen Berechnen ist eine Gute Idee.

Der Luftdruck hat sich ja auch stark geändert, aber so stark?
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Habe mal ein paar Werte mit LibreOffice Calc nach gerechnet(Für den Taschenrechner, war ich Zufaul).

Die Werte Stimmen jedenfalls.
MFG
Michael Springwald

Mathias
Beiträge: 6919
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TChart Probleme mit mehreren Achsen.

Beitrag von Mathias »

Welche Lazarus-Version hast du denn? Bei mir (trunk) stürzt nichts ab.
Version: 1.5 dann Update ich sie mal wieder, vielleicht wurde der Fehler behoben.
Das könnte schon ein Problem sein, ich habe letzt Zeit mit "svn up" gesehen, das an Chart geändert wurde.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TChart Probleme mit mehreren Achsen.

Beitrag von pluto »

Das könnte schon ein Problem sein, ich habe letzt Zeit mit "svn up" gesehen, das an Chart geändert wurde.
Jedenfalls taucht das Problem jetzt nicht mehr auf...
MFG
Michael Springwald

Antworten