|
График X-Y в PictureBox
|
|||
---|---|---|---|
#18+
Попытаюсь объяснить понятнее, что у меня происходит. Имеется два массива 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. Как с этим бороться? Не понимаю где может быть ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 14:46 |
|
График X-Y в PictureBox
|
|||
---|---|---|---|
#18+
чтоб понятнее было, выложу скриншот ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 15:25 |
|
График X-Y в PictureBox
|
|||
---|---|---|---|
#18+
Приложите полноценный пример, который можно запустить и посмотреть. Где-то явно проблема с преобразованием в целое или какое-то округление, но я на глаз не нашел ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 16:36 |
|
График X-Y в PictureBox
|
|||
---|---|---|---|
#18+
Попробовал распечатать первые 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 цифры после запятой? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 09:22 |
|
График X-Y в PictureBox
|
|||
---|---|---|---|
#18+
KPEATOP, причина найдена верно, вывод сделан неверный. Хотите обойтись малой кровью - вычисляйте середину (на худой конец, минимум) диапазона и вычитайте его. Получите точность, которую способен обеспечить Single в наилучших для него условиях. Хотите сделать всё контролируемо (без особых сюрпризов) - установите ScaleMode в vbPixels, и переводите из своей системы координат в экранную самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 10:13 |
|
|
start [/forum/topic.php?fid=60&msg=38374734&tid=2156790]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 375ms |
0 / 0 |