Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 30

Как задать начало оси X на графике?

18.02.2024, 17:54. Показов 1073. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В Visual Studio делаю график. По оси Y - числовые значения. По оси X - текущее время. Нашел вот такой код:

VB.NET
1
2
3
4
5
6
7
8
For i = 0 To 30 Step 1
    Chart1.Series("L1").Points.AddXY(DateTime.Now.ToLongTimeString, 0)
    Chart1.Series("L2").Points.AddY(0)
    Chart1.Series("L3").Points.AddY(0)
Next
 
Chart1.ChartAreas(0).AxisY.Maximum = 30
Chart1.ChartAreas(0).AxisY.Minimum = -20
Но на графике появляется длинная полоса (выделил красным прямоугольником). Т.е. график начинается не сначала оси X. Как сделать, чтобы этой полосы не было и график начинался оттуда, куда показывает стрелка?
Миниатюры
Как задать начало оси X на графике?  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2024, 17:54
Ответы с готовыми решениями:

Как задать начало координат в точке (0;0) на графике chart
Работаю в windows forms c#, график сразу создается таким, никак не получается исправить

Как на графике в Excel задать свои значения по оси X (а не просто подписать ось)?
Добрый день! Excel 2010. Создаю график, предположим, функции y = 0.5 x, по таблице значений. Соответственно, у меня есть таблица...

Как добавить оси в графике функции
Здравствуйте! построил график функции y=cos(x) с помощью Chart, подскажите как сделать так чтоб были видны ОСИ XY? using System; ...

13
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
18.02.2024, 22:32
antisept, вариант
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Imports System.Windows.Forms.DataVisualization
'...
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Chart1.Series.Clear()
    Chart1.ChartAreas(0).AxisY.Maximum = 30
    Chart1.ChartAreas(0).AxisY.Minimum = -20
    Chart1.Series.Add("L1")
    Chart1.Series.Add("L2")
    Chart1.Series.Add("L3")
    Dim yy(30) As Integer
    Dim rnd As New Random
    Chart1.Series("L1").XValueType = Charting.ChartValueType.Time
    For i = 0 To 30
        Dim dt As Double = DateTime.Now.AddMinutes(5 * i).ToOADate
        Chart1.Series("L1").Points.AddXY(dt, rnd.Next(-20, 31))
        Chart1.Series("L2").Points.AddXY(dt, rnd.Next(-20, 31))
        Chart1.Series("L3").Points.AddXY(dt, rnd.Next(-20, 31))
    Next
    Chart1.ChartAreas(0).AxisX.Minimum = Chart1.Series("L1").Points(0).XValue
    Chart1.ChartAreas(0).AxisX.Crossing = Chart1.ChartAreas(0).AxisX.Minimum
    Chart1.ChartAreas(0).AxisX.IntervalType = Charting.DateTimeIntervalType.Minutes
    Chart1.ChartAreas(0).AxisX.Interval = 5
    Chart1.Series("L1").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L2").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L3").ChartType = Charting.SeriesChartType.Line
End Sub
Миниатюры
Как задать начало оси X на графике?  
1
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
19.02.2024, 11:18
Установить минимум по оси Y в 0.
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
19.02.2024, 19:08
Вариант
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Chart1.Series.Clear()
    Chart1.ChartAreas(0).AxisY.Maximum = 30.0
    Chart1.ChartAreas(0).AxisY.Minimum = -20.0
    Chart1.Series.Add("L1")
    Chart1.Series.Add("L2")
    Chart1.Series.Add("L3")
    Dim rnd As New Random
    For i = 0 To 30
        Dim dt = DateTime.Now.AddMinutes(5 * i)
        Chart1.Series("L1").Points.AddXY(dt, rnd.Next(-20, 31))
        Chart1.Series("L2").Points.AddXY(dt, rnd.Next(-20, 31))
        Chart1.Series("L3").Points.AddXY(dt, rnd.Next(-20, 31))
    Next
    Chart1.ChartAreas(0).AxisX.Minimum = Chart1.Series("L1").Points(0).XValue
    Chart1.ChartAreas(0).AxisX.Crossing = Chart1.ChartAreas(0).AxisX.Minimum
    Chart1.ChartAreas(0).AxisX.IntervalType = Charting.DateTimeIntervalType.Minutes
    Chart1.ChartAreas(0).AxisX.Interval = 5
    Chart1.Series("L1").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L2").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L3").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L1").XValueType = Charting.ChartValueType.Time
End Sub

PS. См. https://learn.microsoft.com/en... dfrom=MSDN
0
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 30
19.02.2024, 19:25  [ТС]
ovva, благодарю за варианты. У меня, к сожалению, почему-то не сработали. Теперь на графике просто горизонтальная полоса и никакие значения не отображаются
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
19.02.2024, 20:32
antisept, покажите ваш код, а лучше приведите проект целиком.
0
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
19.02.2024, 22:19
Цитата Сообщение от antisept Посмотреть сообщение
Здравствуйте! В Visual Studio делаю график. По оси Y - числовые значения. По оси X - текущее время. Нашел вот такой код:

VB.NET
1
2
3
4
5
6
7
8
For i = 0 To 30 Step 1
    Chart1.Series("L1").Points.AddXY(DateTime.Now.ToLongTimeString, 0)
    Chart1.Series("L2").Points.AddY(0)
    Chart1.Series("L3").Points.AddY(0)
Next
 
Chart1.ChartAreas(0).AxisY.Maximum = 30
Chart1.ChartAreas(0).AxisY.Minimum = -20
Но на графике появляется длинная полоса (выделил красным прямоугольником). Т.е. график начинается не сначала оси X. Как сделать, чтобы этой полосы не было и график начинался оттуда, куда показывает стрелка?
А в чем смысл цикла? Что он вообще делает? Смысл переменной i? 31 раз повторяет одно и то же?
VB.NET
1
2
Chart1.Series("L2").Points.AddY(0)
Chart1.Series("L3").Points.AddY(0)
0
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
20.02.2024, 02:56
Не спрашивайте почему и как. Сам не знаю. Но в его случае с
VB.NET
1
Chart1.Series("L1").Points.AddXY(DateTime.Now.ToShortTimeString, 1)
сработал
VB.NET
1
Chart1.ChartAreas(0).AxisX.Minimum = 1
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Chart1.Series.Clear()
    Chart1.ChartAreas(0).AxisY.Maximum = 30
    Chart1.ChartAreas(0).AxisY.Minimum = -20
    Chart1.Series.Add("L1")
    Chart1.Series.Add("L2")
    Chart1.Series.Add("L3")
    Chart1.Series("L1").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L2").ChartType = Charting.SeriesChartType.Line
    Chart1.Series("L3").ChartType = Charting.SeriesChartType.Line
    Chart1.ChartAreas(0).AxisX.Minimum = 1
    For i = 0 To 30
        Chart1.Series("L1").Points.AddXY(DateTime.Now.ToShortTimeString, 1)
        Chart1.Series("L2").Points.AddY(i + 2)
        Chart1.Series("L3").Points.AddY(i + 3)
    Next
End Sub
Миниатюры
Как задать начало оси X на графике?  
0
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 30
20.02.2024, 07:16  [ТС]
ovva, прикрепляю весь проект. Visual Studio 2022. Этот код начинается с 34 строки
Вложения
Тип файла: zip second.zip (127.2 Кб, 19 просмотров)
0
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
20.02.2024, 10:57
Цитата Сообщение от antisept Посмотреть сообщение
ovva, прикрепляю весь проект. Visual Studio 2022. Этот код начинается с 34 строки
VB.NET
1
Chart1.ChartAreas(0).AxisX.Minimum = 1
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Me.CenterToScreen()
ButtonDisconnect.Enabled = False
ButtonConnect.Enabled = False
ButtonStartRecording.Enabled = False
ButtonStopRecording.Enabled = False
ComboBoxBaudRate.SelectedIndex = 3
 
ButtonSaveToExcel.Height = 50
 
For i = 0 To 30 Step 1
    Chart1.Series("LDR1").Points.AddXY(DateTime.Now.ToLongTimeString, 0)
    Chart1.Series("LDR2").Points.AddY(0)
    Chart1.Series("POTENTIO").Points.AddY(0)
 
Next
Chart1.ChartAreas(0).AxisX.Minimum = 1
Chart1.ChartAreas(0).AxisY.Maximum = 30
Chart1.ChartAreas(0).AxisY.Minimum = -20
1
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
20.02.2024, 11:03
График начинается с начала оси.
VB.NET
1
2
3
4
5
6
7
For i = 0 To 30 Step 1
    Chart1.Series("LDR1").Points.AddXY(DateTime.Now.ToLongTimeString, 2)
    Chart1.Series("LDR2").Points.AddY(4)
    Chart1.Series("POTENTIO").Points.AddY(6)
 
Next
Chart1.ChartAreas(0).AxisX.Minimum = 1
Миниатюры
Как задать начало оси X на графике?  
1
148 / 70 / 12
Регистрация: 11.02.2017
Сообщений: 310
20.02.2024, 12:37
antisept,
Или с Timer1 с Interval = 1000 вместо цикла для наглядности.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Chart1.ChartAreas(0).AxisX.Minimum = 1
    Chart1.ChartAreas(0).AxisX.Interval = 1
    Chart1.ChartAreas(0).AxisY.Maximum = 30
    Chart1.ChartAreas(0).AxisY.Minimum = -20
End Sub
 
Dim dt As DateTime = Now
 
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    If DateDiff(DateInterval.Second, dt, Now) = 31 Then
        Timer1.Stop()
    Else
        Chart1.Series("LDR1").Points.AddXY(DateTime.Now.ToLongTimeString, DateDiff(DateInterval.Second, dt, Now))
        Chart1.Series("LDR2").Points.AddY(DateDiff(DateInterval.Second, dt, Now) + 1)
        Chart1.Series("POTENTIO").Points.AddY(DateDiff(DateInterval.Second, dt, Now) + 2)
    End If
End Sub
Миниатюры
Как задать начало оси X на графике?  
1
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
20.02.2024, 16:00
antisept, попробуйте.
VS2019,Net 4.7.2
Миниатюры
Как задать начало оси X на графике?  
Вложения
Тип файла: rar BriefExample.rar (18.7 Кб, 8 просмотров)
1
0 / 0 / 0
Регистрация: 08.10.2023
Сообщений: 30
20.02.2024, 18:45  [ТС]
Hell666, ovva, благодарю вас за ответы! Вы мне очень помогли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2024, 18:45
Помогаю со студенческими работами здесь

Как создать 3 Y-оси на графике Chart?
Добрый день. Как создать 3 Y-оси на графике Chart? Пример на картинке. Сделал две Y-оси с помощью...

Как изменить значение на графике оси Y
Есть таблица в первой строке заголовок, в первом столбике года,Нужно чтоб заголовок был по оси Y года( которые в первом столбике) были по...

Как сложить данные на графике по оси X
Снова здравствуйте) Построил вместе два графика зависимости h1=f(q1) и h2=f(q2). Теперь нужно получить третью суммарную зависимость...

Как в графике отсортировать значения по оси Y?
Пытаюсь построить диаграмму, она строится, но есть один нюанса, значения по оси y разбросаны как попало. Как можно это исправить? ...

Как на графике в Chart сделать по оси Х надписи с текстом
Привет) У меня вопрос: мне нужно на графике в Chart сделать по оси Х надписи с текстом.как это сделать???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru