German Charts X-Scala als Datum

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi, ich möchte in dem Charts-Modul in der X-Scala statt nummerische Werte das Datum anzeigen lassen, geht das ?

B4X:
"Charts.AddLinePoint(LD, i, cr_tankdaten.GetString("rechnung"), i Mod 10 = 0)"

"i Mode 10 =0" heißt ja i=Wert der X-Scala in 10er-Schritte bei Anfang=0 .

Statt i möchte ich das Datum des entsprechenden Wertes anzeigen, aber anscheinend nimmt er keine Stringvariable an, bring immer Numberformatexeption Fehler.
 

klaus

Expert
Licensed User
Longtime User
Es ist möglich, aber könntest Du deinen Code posten oder zu mindest die DatenWerte ?

Die X-Werte sind Strings, und um einen Skalawert auf der X-Skala zu setzen muss man in der Charts.AddLinePoint Routine den letzten Wert auf True setzen.
Im Beispiel ist i Mod 90 = 0 entweder True oder False und heisst dass alle 90 Punkte Text auf der X-Skala angezeigt werden soll.

Ich habe zum Beispiel in dem Demoprogramm Zeile 126 so geändert:
Charts.AddLinePoint(LD, "Text "&(i/10), SinD(i), i Mod 90 = 0)

Anstatt:
Charts.AddLinePoint(LD, i, SinD(i), i Mod 90 = 0)

Mit untenstehendem Resultat.

Beste Grüsse.
 

Attachments

  • Chart1.jpg
    Chart1.jpg
    31.3 KB · Views: 230
Last edited:

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi Klaus, hat wunderbar funktioniert.

Noch eine Frage: Den Parameter "i Mod 90 = 0" gibt es beim Barchart ja nicht wie ich das sehe, wie kann ich da einen Step einstellen, dass ich z.B. nur 10 X-Positionen beschriften kann ?

Wenn es nicht per Parameter geht, muss ich halt in der Schleife mir einen Step basteln.
 

klaus

Expert
Licensed User
Longtime User
Es ist möglich :).

Du musst nur folgendes in dem Charts Modul ändern.
Zeile 16:
Sub AddBarPoint (BD As BarData, X As String, YArray() As Float)
in
Sub AddBarPoint (BD As BarData, X As String, YArray() As Float, ShowTick As Boolean)

Zeile 30:
b.ShowTick = True
in
b.ShowTick = ShowTick

Im Main Mudul in den Zeilen:
Charts.AddBarPoint(....., i Mod 2 = 0)
hinten i Mod 2 = 0 oder ähnlich anhängen

Beste Grüsse
 

Paulsche

Well-Known Member
Licensed User
Longtime User
hi Klaus, neues Problem !

beim Literpreis habe ich Werte zwischen 1.0 und 1.60 ,
wenn ich bei G.YInterval < 1 eingeb hängt das Programm.
Bei G.YInterval=1 ist aber alles auf einer Linie, ist ja auch klar.
Ich bräuchte also einen interval von z.B. 0.2 , ist das irgendwie machbar ?
 

klaus

Expert
Licensed User
Longtime User
Das Problem muss bei Dir wo anders liegen, denn die Y.Interval Variable ist vom Type Float !
Als Beweis, schaue mal im, Demoprogramm die Sinusline an !
Ich habe auch im Bardiagramm alle Werte durch 1000 geteilt und es funktioniert, siehe Bild.
Um weiter zu difteln würde Ich Dein Projekt mi Deinen Werten brauchen.

Beste Grüsse.
 

Attachments

  • Chart2.jpg
    Chart2.jpg
    26.2 KB · Views: 217

Paulsche

Well-Known Member
Licensed User
Longtime User
aaaahhh, sorry, stimmt. Hatte für G.Yinterval eine variable vom Typ Int genommen, die bei Zuweisung von 0.2 den Wert 0 hatte.
Hab nun den Typ String genommen, nun funktioniert es ,

tausend Dank !!!
 

speedy33

New Member
Licensed User
Longtime User
Hallo,

ich versuche auch die Anzeige eines Textes an der X-Achse.
Ich hab mit dem Beispiel von Klaus angefangen und als Temp Chart umgeschrieben. Nur den Text bekomme ich nicht hin ? :BangHead:

Was mache ich noch falsch ?

Code im Anhang.

Speedy
 

Attachments

  • temp_chart.zip
    8.7 KB · Views: 197
  • temp_chart.jpg
    temp_chart.jpg
    54.9 KB · Views: 189

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi, liegt an der Teilung durch 10,
so geht es:
Charts.AddLinePoint(LD, "Text "&(i/10), myarray(i), i Mod 8 = 0)

oder

Charts.AddLinePoint(LD, "Text "&(i/10), myarray(i), i Mod 4 = 0)
 

klaus

Expert
Licensed User
Longtime User
Das Problem liegt hier:
B4X:
For i = 1 To 200 Step 5
Es muss so sein:
B4X:
For i = 0 To 200 Step 5
In Deinem Code hat die Variable 'i' nie einen Wert von 10, 20, 30 usw.
sondern 1, 6, 11, 16 unw, also ist i Mode 10 = 0 nie erfüllt.

Beste Grüsse.
 

speedy33

New Member
Licensed User
Longtime User
Danke Paulsche und Klaus,

bin nun sehr nah an meiner Wunschlösung.

Speedy
 

Attachments

  • temp_chart.jpg
    temp_chart.jpg
    56.3 KB · Views: 200
  • temp_chart_.zip
    9.1 KB · Views: 213

klaus

Expert
Licensed User
Longtime User
Das Diagramm auf Deinem Screenshot sieht etwas 'komisch' aus.
Die senkrechten Linien und der Rahmen sind nicht richtig.
Noch ein Vorschlag, Du solltest diese Zeile:
B4X:
p.AddView(pnlLine, 0, 0, 100%x, 100%y - 100dip)
so ändern:
B4X:
p.AddView(pnlLine, 0, 0, 95%x, 100%y - 100dip)
dann bekommst Du rechts einen Rahmen.
Die Breite des internen Panels eines TabHosts ist schmäler als 100%x.

Beste Grüsse.
 
Top