Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / График X-Y в PictureBox / 5 сообщений из 5, страница 1 из 1
22.08.2013, 14:46
    #38374734
KPEATOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
График X-Y в PictureBox
Попытаюсь объяснить понятнее, что у меня происходит.
Имеется два массива X(kol,kol) и Y(kol). X - это дата и время, Y-числа формата Double. Рисую в PictureBox двумерный график X от Y:

[BASIC]Xmin = CDbl(X(1,1)) + CDbl(X(1,2))
Xmax = CDbl(X(kol,1)) + CDbl(X(kol,2))
Ymin = Pmax * 1.2
Ymax = Pmin / 1.2
Picture4.Scale (Xmin, Ymin)-(Xmax, Y2max)
For i = 1 To kol
Picture4.Circle (CDbl(X(i,1)) + CDbl(X(i,2)), Y(i)), Picture4.ScaleWidth / 200
Next i
[/BASIC]

Даты и время перевожу в числовое значение. Разница между точками 1 минута. На графике же у меня получается, что на одном времени по несколько точек сидит. Не знаю понятно объяснил или нет? Т.е. Сначала 6 точек с одинаковым значением X располагаются друг над другом (т.е. по оси Y значения разные , все норм), потом еще несколько точек друг над другом и т.д. Количество точек с одинаковым X по разному от 4-х до 6-и. Шаг между одними точками с одинаковым X и другими примерно 0.004 в числовом формате.
Я проверял CDbl(X(i,1)) + CDbl(X(i,2)), у каждой точки разное число (отличие в 3-ем знако после запятой), а на графике по несколько точек располагаются друг над другом с одинаковым X.
Как с этим бороться? Не понимаю где может быть ошибка.
...
Рейтинг: 0 / 0
22.08.2013, 15:25
    #38374824
KPEATOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
График X-Y в PictureBox
чтоб понятнее было, выложу скриншот
...
Рейтинг: 0 / 0
22.08.2013, 16:36
    #38374969
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
График X-Y в PictureBox
Приложите полноценный пример, который можно запустить и посмотреть. Где-то явно проблема с преобразованием в целое или какое-то округление, но я на глаз не нашел
...
Рейтинг: 0 / 0
23.08.2013, 09:22
    #38375435
KPEATOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
График X-Y в PictureBox
Попробовал распечатать первые 10 значений двумя способами Debug.Print CSng(DDKID(i)) + CSng(VDKID(i)), CDbl(DDKID(i)) + CDbl(VDKID(i)) м вот что получается:

41001,59 41001,5840625
41001,59 41001,5847569444
41001,59 41001,5854513889
41001,59 41001,5861458333
41001,59 41001,5868402778
41001,59 41001,5875347222
41001,59 41001,5882291667
41001,59 41001,5889236111
41001,59 41001,5896180556
41001,59 41001,5903125

Теперь смотрю в справке и вижу:
Syntax

object.Circle [Step] (x, y), radius, [color, start, end, aspect]

(x, y) Required. Single values

Если x,y - Single значит даже если я и буду делать CDbl(DDKID(i)) + CDbl(VDKID(i)), то у меня на графике все равно будет только 2 цифры после запятой?
...
Рейтинг: 0 / 0
23.08.2013, 10:13
    #38375492
График X-Y в PictureBox
KPEATOP,

причина найдена верно, вывод сделан неверный.
Хотите обойтись малой кровью - вычисляйте середину (на худой конец, минимум) диапазона и вычитайте его. Получите точность, которую способен обеспечить Single в наилучших для него условиях.
Хотите сделать всё контролируемо (без особых сюрпризов) - установите ScaleMode в vbPixels, и переводите из своей системы координат в экранную самостоятельно.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / График X-Y в PictureBox / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]