Member 14560567 Ответов: 2

Zedgraph о xaxis(часы)


- привет!

У меня есть проблема, чтобы показать часы в графике.

У меня есть эти регистры в базе данных MySQL:
hora:                temperatura:
8:34:14             +025.52
8:35:15             +026.43
8:36:16             +026.24
8:37:17             +027.50
   .                    .
   .                    .
   .                    .
   .                    .


так что я строю график:
https://i.stack.imgur.com/RZxQz.jpg

XAxis показывает часы "70000, 80000, 90000,...."
Я хочу, чтобы часы шоу Xaxis были такими "7:00:00 8:00:00 9:00:00"

Итак, у меня есть часы, хранящиеся в базе данных.

это и есть код:

Private Sub CreateGraph(ByVal zgc As ZedGraphControl)
       Try
           Dim query As String = "SELECT * from termocuplas WHERE id_modulo = '#03H' AND fecha = '2019-08-27' ORDER BY fecha ASC, hora ASC"    'ORDER BY fecha ASC
           Dim connection As New MySqlConnection(connStr)
           Dim cmd As New MySqlCommand(query, connection)
           connection.Open()
           reader = cmd.ExecuteReader()

           Dim myPane As GraphPane = zgc.GraphPane
           myPane.Title.Text = "Termocupla"
           myPane.XAxis.Title.Text = "Tiempo(hh:mm:ss)"
           myPane.XAxis.Scale.MagAuto = False

           myPane.YAxis.Title.Text = "Temperatura °C"
           myPane.YAxis.Scale.MagAuto = False

           Dim list1 = New PointPairList()
           Dim y As Single
           Dim x As Single

           If reader.Read Then
               While reader.Read()
                   y = Convert.ToSingle(Replace(reader.GetString(3), ".", ","))
                   x = Convert.ToSingle(Replace(reader.GetString(11), ":", ""))
                   list1.Add(x, y)
               End While
               reader.Close()
           Else
               MessageBox.Show("Nothing")
           End If

           Dim myCurve As LineItem = myPane.AddCurve("Termocupla Vapor", list1, Color.Red, SymbolType.None)
           myCurve.Line.Fill = New Fill(Color.White, Color.Red, 45.0F) ' Make the symbols opaque by filling them with white
           myCurve.Symbol.Fill = New Fill(Color.White) ' Fill the axis background with a color gradient
           myPane.Chart.Fill = New Fill(Color.White, Color.LightGoldenrodYellow, 45.0F) ' Fill the pane background with a color gradient
           myPane.Fill = New Fill(Color.White, Color.FromArgb(220, 220, 255), 45.0F)
           zgc.AxisChange()
           connection.Close()
       Catch ex As Exception
           Console.WriteLine(ex.Message)
       End Try

   End Sub


Что я уже пробовал:

Итак, что я могу сделать, чтобы правильно показать часы?

2 Ответов

Рейтинг:
9

Member 14560567

решение таково:

Dim list1 = New PointPairList()
Dim y As Single
Dim x As Single
Dim c As Date

      If reader.Read Then
                While reader.Read()
                    y = Replace(reader.GetString(3), ".", ",")
                    c = Convert.ToDateTime(reader.GetString(11))
                    x = c.ToOADate()
                    list1.Add(x, y)
                End While
                reader.Close()
            End If


это работает!!!! (Y) большое спасибо!


Рейтинг:
0

Gerry Schmitz

Вероятно, вам нужно сохранить "значение x" как "дату и время".

Затем, когда вы указываете "ось x", должно быть предусмотрено указание формата "мажорной / минорной" галочки "метки".

Или может быть событие "on load" для элемента или что-то подобное, что позволяет захватывать метку для вращения и т. д.


Member 14560567

Я сделал это:

Dim x как система.значение datetime
а внутри "пока" =
x = читатель.И getString("гора")

но теперь это ошибка=

Ошибка 1 разрешение перегрузки не удалось, так как ни один доступный " Add " не может быть вызван с этими аргументами:
'Общественного подменю добавить(х как Double, Y как двойной)': преобразование из 'дата' в тип 'double' требует называть дату.В описании метода tooadate' способ.
'Public Sub Add(x() As Double, y() As Double)': значение типа 'Date' не может быть преобразовано в '1-мерный массив Double'.
'Public Sub Add(x() As Double, y() As Double)': значение типа 'Single' не может быть преобразовано в '1-мерный массив Double'.