vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2022
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
vb.net chart: Wie bekommt man AxisX.CustomLabels synchron mit AxisX.MajorTickMar 
Autor: JTrum
Datum: 17.05.22 14:10

Wie im Code angezeigt, bekomme ich CustomLabels angezeigt, aber sie liegen nicht auf den in der ChartArea definierten MajorTickMarks. Wie bekomme ich das synchron?


Dim from_X, to_X As Date
from_X = myClass.get_DateOfWeek(CInt(yearkNo), CInt(weekNo), DayOfWeek.Monday)
'Last week from mainTable
weekNo = mainTable.Columns(mainTable.Columns.Count - 1).ColumnName.Split(CChar( _
  "/"))(0).Substring(2, 2)
yearkNo = mainTable.Columns(mainTable.Columns.Count - 1).ColumnName.Split(CChar( _
"/"))(1).Substring(0, 4)
to_X = myClass.get_DateOfWeek(CInt(yearkNo), CInt(weekNo), DayOfWeek.Saturday)
 
Dim ints as integer = CInt(DateDiff(DateInterval.WeekOfYear, from_X, to_X, _
  FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFullWeek))
Dim xdate(ints) As Date 'is looped through and the date of the respective week 
' is added.
 
newchart(chart1) 'create new chart
Dim chartArea1 As New ChartArea("Default")
chart1.ChartAreas.Add(chartArea1)
 
chart1.ChartAreas("Default").AxisX.IntervalType = DateTimeIntervalType.Weeks
chart1.ChartAreas("Default").AxisX.Interval = 1
chart1.ChartAreas("Default").AxisX.LabelAutoFitStyle = _
  LabelAutoFitStyles.DecreaseFont
chart1.ChartAreas("Default").AxisX.LabelAutoFitMinFontSize = 7
chart1.ChartAreas("Default").AxisX.LabelStyle.Font = My.Settings.fontbold8
chart1.ChartAreas("Default").AxisX.LabelStyle.Angle = 90
chart1.ChartAreas("Default").AxisX.MajorTickMark.Enabled = True
chart1.ChartAreas("Default").AxisX.MinorTickMark.Enabled = False
chart1.ChartAreas("Default").AxisX.Minimum = from_X.ToOADate()'44443
chart1.ChartAreas("Default").AxisX.Maximum = to_X.ToOADate()'44828
chart1.ChartAreas("Default").AxisX.IsMarginVisible = False
 
chart1.Series.Add("K").Color = ColorTranslator.FromHtml("#297AB7") 'MattBlau 
' colorx(0)
chart1.Series("K").Points.DataBindXY(xdate, yValues)
 
chart1.ChartAreas("Default").AxisX.CustomLabels.Clear()
For intVal As Integer = 0 To ints - 1
	Debug.Print(intVal & " - " & Format(xdate(intVal), "yyyy-MM-dd"))
	Select Case intVal
		Case 0, 5, 10, 15, 20, ints - 2
			chart1.ChartAreas("Default").AxisX.CustomLabels.Add(xdate(intVal).ToOADate( _
  ), xdate(ints - 1).ToOADate(), myClass.get_WeekNumber(xdate(intVal)) & "/" & _
  xdate(intVal).Year)
	End Select
Next
Ergebnis sieht bis jetzt so aus:
https://www.spearhead-home.com/Downloads/20220517_XAchseKWs.jpg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: vb.net chart: Wie bekommt man AxisX.CustomLabels synchron mit AxisX.MajorTickMar 
Autor: Manfred X
Datum: 18.05.22 00:48

Hallo!

Wenn Du DateTimeInterval Weeks verwendest, um Ticks zu definieren, musst Du für jede Woche (Datum)
oder jede zweite Woche ein Achsen-Label definieren, um beides zu koordinieren.
Die Position der Labels darf dann nicht von den Daten abhängig sein.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: vb.net chart: Wie bekommt man AxisX.CustomLabels synchron mit AxisX.MajorTickMar 
Autor: JTrum
Datum: 19.05.22 14:38

Ja, so habe ich mir es dann auch gedacht und folgende Lösung für mich gefunden: AxisX.IntervalType, AxisX.Minimum, AxisX.Maximum müssen mit den series DataBindXY(xValues, yValues) zusammenpassen

Dim ints as integer = CInt(DateDiff(DateInterval.WeekOfYear, von_X, bis_X, _
  FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFullWeek))
Dim xdate(ints) As Date 'is looped through and the date of the respective week 
' is added.
Dim xInt(ints) As Integer 'is looped through and the numbers of the 
' interval-count added.
 
chart1.ChartAreas("Default").AxisX.IntervalType = DateTimeIntervalType.NotSet
chart1.ChartAreas("Default").AxisX.Interval = 1
chart1.ChartAreas("Default").AxisX.Minimum = 0
chart1.ChartAreas("Default").AxisX.Maximum = ints - 1
 
chart1.ChartAreas("Default").AxisX.CustomLabels.Clear()
For intVal As Integer = 0 To ints - 1
Dim kw_run As String = ""
kw_run = myClass.set_WeekFormat(myClass.get_WeekNumber(xdate(intVal)), xdate( _
  intVal), True)
'Ergebnis sieht z.B. so aus: 2022/20
chart1.ChartAreas("Default").AxisX.CustomLabels.Add(intVal, intVal + 1, kw_run, _
  0, LabelMarkStyle.None)
Next
 
'Series
chart1.Series("mySeries").Points.DataBindXY(xInt, yValues)
'...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2022 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel