Chart & X-Achse Beschriftung
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 42 Antworten in diesem Thema. Der letzte Beitrag () ist von hw522.
-
-
Den Post versteh ich leider inhaltlich nicht (ganz).
hw522 schrieb:
Also ich habe bisher kein Beispiel gefunden, bei dem der X-Achse Werte zugewiesen wurden.
hw522 schrieb:
Bei den Points mit den Datenpaaren (AddXY-Methode) zur Zeichnung des Graphen kein Problem
hw522 schrieb:
Wo/wie geht das?Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
Das ist wörtlich zu nehmen wie es da steht:
Also ich habe bisher kein Beispiel gefunden, bei dem der X-Achse Werte zur BESCHRIFTUNG zugewiesen wurden.
Bei den Points mit den Datenpaaren (AddXY-Methode) zur Zeichnung des Graphen kein Problem, das betrifft aber nicht die Beschriftung der X-Achse.
Wo/wie geht das?
==> wo und wie weist man der X-Achse die Beschriftung zu? -
Achso.
Naja, ich denke nicht, dass Du jetzt schon einen Code zur Zuweisung der Werte zur Beschriftung brauchst. Wir sollten erstmal klären, warum Deine Achse schon eine vom Default abweichende Beschriftung hat. Wir man es richtig macht können wir dann klären, sobald die Ursache für die falsche Beschriftung (also Datum statt 0, 1, 2) gefunden wurde. Ansonsten kann es passieren, dass der vorhandene, versteckte Falschcode das alles wieder zunichte macht. Daher bitte Inhalt der FormX.Designer.VB posten, wobei FormX das Form ist, wo sich das falsch beschriftete Chart befindet.Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
-
-
Ich habe jetzt ein neues Projekt ohne Zusätze, formatierung etc. gemacht
Quellcode
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim inzidenz_arr() As String = File.ReadAllLines("inzidenz_rnk.txt")
- Dim datum_arr() As String = File.ReadAllLines("inz_datum.txt")
- Dim t As Double
- For t = 0 To inzidenz_arr.Count - 1
- Dim iz As Double = inzidenz_arr(t)
- Chart1.Series(0).Points.AddXY(t, iz)
- Next t
- End Sub
- End Class
Ergebnis im Entwurf und im Debug: -
@hw522 Form mit
ChartControl
undComboBox
:Spoiler anzeigen VB.NET-Quellcode
- Imports System.Windows.Forms.DataVisualization.Charting
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- ComboBox1.Items.Clear()
- ComboBox1.Items.AddRange(New String() {"MMM", "MMMM", "dd.MM.yyyy", "MM.yyyy", "MMM.yyyy", "MMMM.yyyy", "MM.yy", "HH.mm.ss"})
- Dim dt = DateTime.Now
- For i = 0 To 20
- Dim x = i
- Dim y = i '* i
- 'Me.Chart1.Series(0).Points.AddXY(x, y)
- 'Me.Chart1.Series(0).Points.AddXY(x, dt.AddHours(i))
- Me.Chart1.Series(0).Points.AddXY(dt.AddHours(i), y)
- Next
- Chart1.ChartAreas(0).AxisX.LabelStyle.Angle = 45 ' geneigte Beschriftung der x-Achse
- ComboBox1.SelectedIndex = 2
- End Sub
- Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
- Chart1.ChartAreas(0).AxisX.LabelStyle.Format = ComboBox1.SelectedItem.ToString()
- End Sub
- End Class
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
*unnötiges Vollzitat entfernt*
So sieht das schon gut aus,
Dim dt = DateTime.Now ist logischerweise immer heute, mein erstes Datum ist beliebig, aus einem Array. Das klappt dann so nicht.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()
-
hw522 schrieb:
Das klappt dann so nicht.
Du kannst da reinpacken, was immer Du willst.
Und:
Zitierebittegefälligst nicht komplette Posts über den Deinen.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Klingt, als ob nun zwar bekannt ist, wie man es hinbekommt, aber der Fehler, um den es eigentlich ging, wurde immer noch nicht gefunden. Das ist schlecht und führt ggf. dazu, dass der Fehler wieder auftritt. Und dann stehen wir wieder am Anfang.
Was ich eigentlich meinte, was gepostet werden sollte: Im Projektverzeichnis gibt es eine Datei, die vermutlich heißt:Form1.Designer.vb
. Die bitte per Visual Studio oder Editor öffnen, Inhalt kopieren und hier posten.
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
Hier form1.designer.vb:
Spoiler anzeigen
VB.NET-Quellcode
- <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
- Partial Class Form1
- Inherits System.Windows.Forms.Form
- 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
- <System.Diagnostics.DebuggerNonUserCode()>
- Protected Overrides Sub Dispose(ByVal disposing As Boolean)
- Try
- If disposing AndAlso components IsNot Nothing Then
- components.Dispose()
- End If
- Finally
- MyBase.Dispose(disposing)
- End Try
- End Sub
- 'Wird vom Windows Form-Designer benötigt.
- Private components As System.ComponentModel.IContainer
- 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
- 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
- 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
- <System.Diagnostics.DebuggerStepThrough()>
- Private Sub InitializeComponent()
- Dim ChartArea1 As System.Windows.Forms.DataVisualization.Charting.ChartArea = New System.Windows.Forms.DataVisualization.Charting.ChartArea()
- Dim Legend1 As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend()
- Dim Series1 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series()
- Dim Series2 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series()
- Dim Series3 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series()
- Dim Series4 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series()
- Dim Series5 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series()
- Me.ListView1 = New System.Windows.Forms.ListView()
- Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
- Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
- Me.TextBox1 = New System.Windows.Forms.TextBox()
- Me.Chart1 = New System.Windows.Forms.DataVisualization.Charting.Chart()
- Me.TextBox2 = New System.Windows.Forms.TextBox()
- Me.TextBox3 = New System.Windows.Forms.TextBox()
- Me.btnClose = New System.Windows.Forms.Button()
- Me.btnShowSecondForm = New System.Windows.Forms.Button()
- CType(Me.Chart1, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.SuspendLayout()
- '
- 'ListView1
- '
- Me.ListView1.BackColor = System.Drawing.Color.Linen
- Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2})
- Me.ListView1.FullRowSelect = True
- Me.ListView1.GridLines = True
- Me.ListView1.HideSelection = False
- Me.ListView1.Location = New System.Drawing.Point(25, 27)
- Me.ListView1.Name = "ListView1"
- Me.ListView1.Size = New System.Drawing.Size(228, 336)
- Me.ListView1.TabIndex = 0
- Me.ListView1.UseCompatibleStateImageBehavior = False
- Me.ListView1.View = System.Windows.Forms.View.Details
- '
- 'ColumnHeader1
- '
- Me.ColumnHeader1.Text = "Datum"
- Me.ColumnHeader1.Width = 120
- '
- 'ColumnHeader2
- '
- Me.ColumnHeader2.Text = "Inzidenz RNK"
- Me.ColumnHeader2.Width = 80
- '
- 'TextBox1
- '
- Me.TextBox1.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.TextBox1.Location = New System.Drawing.Point(25, 385)
- Me.TextBox1.Name = "TextBox1"
- Me.TextBox1.Size = New System.Drawing.Size(228, 22)
- Me.TextBox1.TabIndex = 1
- '
- 'Chart1
- '
- Me.Chart1.BackColor = System.Drawing.Color.LightSteelBlue
- ChartArea1.AxisX.LabelStyle.Interval = 0R
- ChartArea1.AxisX.LabelStyle.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.[Auto]
- ChartArea1.Name = "ChartArea1"
- Me.Chart1.ChartAreas.Add(ChartArea1)
- Legend1.Name = "Legend1"
- Me.Chart1.Legends.Add(Legend1)
- Me.Chart1.Location = New System.Drawing.Point(275, 27)
- Me.Chart1.Name = "Chart1"
- Series1.ChartArea = "ChartArea1"
- Series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline
- Series1.Legend = "Legend1"
- Series1.LegendText = "Inzidenz RNK"
- Series1.Name = "Series0"
- Series1.ShadowOffset = 2
- Series1.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Date]
- Series1.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Series2.ChartArea = "ChartArea1"
- Series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point
- Series2.IsValueShownAsLabel = True
- Series2.Legend = "Legend1"
- Series2.LegendText = "Min-/Maximum"
- Series2.MarkerSize = 12
- Series2.Name = "Series1"
- Series2.YValuesPerPoint = 6
- Series3.ChartArea = "ChartArea1"
- Series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line
- Series3.IsVisibleInLegend = False
- Series3.Legend = "Legend1"
- Series3.Name = "Series2"
- Series3.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Series3.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Series4.ChartArea = "ChartArea1"
- Series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line
- Series4.Legend = "Legend1"
- Series4.LegendText = "Minimum"
- Series4.MarkerColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(128, Byte), Integer), CType(CType(255, Byte), Integer))
- Series4.Name = "Series3"
- Series4.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Series4.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Series5.ChartArea = "ChartArea1"
- Series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line
- Series5.Legend = "Legend1"
- Series5.LegendText = "Maximum"
- Series5.MarkerColor = System.Drawing.Color.Lime
- Series5.Name = "Series4"
- Series5.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Series5.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.[Double]
- Me.Chart1.Series.Add(Series1)
- Me.Chart1.Series.Add(Series2)
- Me.Chart1.Series.Add(Series3)
- Me.Chart1.Series.Add(Series4)
- Me.Chart1.Series.Add(Series5)
- Me.Chart1.Size = New System.Drawing.Size(1008, 522)
- Me.Chart1.TabIndex = 2
- Me.Chart1.Text = "Chart1"
- '
- 'TextBox2
- '
- Me.TextBox2.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.TextBox2.Location = New System.Drawing.Point(25, 413)
- Me.TextBox2.Name = "TextBox2"
- Me.TextBox2.Size = New System.Drawing.Size(119, 22)
- Me.TextBox2.TabIndex = 3
- '
- 'TextBox3
- '
- Me.TextBox3.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.TextBox3.Location = New System.Drawing.Point(161, 413)
- Me.TextBox3.Name = "TextBox3"
- Me.TextBox3.Size = New System.Drawing.Size(92, 22)
- Me.TextBox3.TabIndex = 4
- '
- 'btnClose
- '
- Me.btnClose.Location = New System.Drawing.Point(25, 506)
- Me.btnClose.Name = "btnClose"
- Me.btnClose.Size = New System.Drawing.Size(228, 30)
- Me.btnClose.TabIndex = 8
- Me.btnClose.Text = "E N D E"
- Me.btnClose.UseVisualStyleBackColor = True
- '
- 'btnShowSecondForm
- '
- Me.btnShowSecondForm.BackColor = System.Drawing.Color.LightSalmon
- Me.btnShowSecondForm.Location = New System.Drawing.Point(25, 458)
- Me.btnShowSecondForm.Name = "btnShowSecondForm"
- Me.btnShowSecondForm.Size = New System.Drawing.Size(228, 23)
- Me.btnShowSecondForm.TabIndex = 7
- Me.btnShowSecondForm.Text = "neeu Daten eingeben"
- Me.btnShowSecondForm.UseVisualStyleBackColor = False
- '
- 'Form1
- '
- Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
- Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.AutoSize = True
- Me.ClientSize = New System.Drawing.Size(1284, 561)
- Me.Controls.Add(Me.btnClose)
- Me.Controls.Add(Me.btnShowSecondForm)
- Me.Controls.Add(Me.TextBox3)
- Me.Controls.Add(Me.TextBox2)
- Me.Controls.Add(Me.Chart1)
- Me.Controls.Add(Me.TextBox1)
- Me.Controls.Add(Me.ListView1)
- Me.Name = "Form1"
- Me.Text = "Form1"
- CType(Me.Chart1, System.ComponentModel.ISupportInitialize).EndInit()
- Me.ResumeLayout(False)
- Me.PerformLayout()
- End Sub
- Friend WithEvents ListView1 As ListView
- Friend WithEvents TextBox1 As TextBox
- Friend WithEvents ColumnHeader1 As ColumnHeader
- Friend WithEvents ColumnHeader2 As ColumnHeader
- Friend WithEvents Chart1 As DataVisualization.Charting.Chart
- Friend WithEvents TextBox2 As TextBox
- Friend WithEvents TextBox3 As TextBox
- Friend WithEvents btnClose As Button
- Friend WithEvents btnShowSecondForm As Button
- End Class
aufgrund des Codeumfangs Spoiler hinzugefügt und CodeTags korrigiert ~VaporiZedDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()
-
Ja, damit kann man was anfangen. Jetzt ist es leicht, das Problem nachzustellen. Und ja, durch Deine Angaben in Post#25 hätte ich/man den "Fehler" schon finden können.
Das Chart geht bei der AngabeXValuesType
=Date
von einem Startwert von 01.01.1900 aus. Wenn Du nun mitChart1.Series(0).Points.AddXY()
einen x-Wert von 0 hinzufügst, ist das der 01.01.1900.
Der Wert 10 ist dann der 11.01.1900. Und so weiter. Um also auf das Jahr 2022 zu kommen, müsstest Du den x-Werten die Tageszahl zwischen 01.01.1900 und 01.01.2022 hinzufügen. Und das wär: 44560. "Ausgerechnet" mit der Codezeile:
Also musst Du, um x = 0 entspricht 01. Januar 2022 zu setzen, dieses Offset mitgeben, also
##########
@hw522:
Aber es geht noch einfacher:
Dabei istStartdatum
eben das erste Datum, was nicht unterschritten wird.
Bei
wird heute als Startdatum gesetzt.
Datumsangaben im Code gehen so: #MM/TT/JJJJ#, also z.B. #06/17/2022# für den heutigen 17. Juni 2022
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()
-
-
Das ist Dein Code, aus Post#27.
Ganze Zahlen, die zu dem Startdatum addiert werden, entsprechen ganze Tage.
Um präziser zu sein, kannst Du das auch z.B. so machen:
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
-
hw522 schrieb:
Kritik geht hier scheinbar immer nur in eine Richtung
Wir erwarten die Beantwortung unserer Fragen, um Dir umfassend helfen zu können:
RodFromGermany schrieb:
Wie generierst Du die Daten im LV?
Wie übernimmst Du die Daten im LV?Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Das mit dem LV habe ich schon berichtet, hier ausführlich:
und
-
hw522 schrieb:
hier ausführlich:
Poste mal den Inhalt der Datei "inz_datum.txt" oder ein paar Zeilen davon.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
-
Ähnliche Themen
-
Eddi - - Sonstige Problemstellungen
-
ketzei - - Sonstige Problemstellungen
-
3 Benutzer haben hier geschrieben
- hw522 (23)
- VaporiZed (13)
- RodFromGermany (7)