5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267

Гистограмма. Точки и их соединение

14.03.2016, 15:55. Показов 4185. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Залип, не знаю уже как сделать. Необходимо на гистограмме обозначить точки по середине вершины столбцов, а потом соединить их через одну 1-ую с 3-ей, 2-ую с 4-ой и так далее...
Прикладываю архив с проектом. На скриншоте то, что сейчас показывает.
Миниатюры
Гистограмма. Точки и их соединение  
Вложения
Тип файла: 7z Задача4.0.7z (2.57 Мб, 9 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2016, 15:55
Ответы с готовыми решениями:

C точки зрения безопасности и быстродействия, что лучше, открывать соединение на каждой странице .asp, или в начале?
C точки зрения безопасности и быстродействия, что лучше, открывать соединение на каждой странице .asp, или в начале?

Глючит соединение с интернетом. Не открываются сайты, не удается установить DNS соединение
Добрый день! Помогите разобраться с проблемой!!! Есть сеть из 30 ПК, последнее 7 дней стал глючить интернет на некоторых ПК с разными ОС....

На графике отметить асимптоты, точки экстремума, точки перегиба, точки пересечения с осями координат
Что-то выходит не совсем правильный график. clc; clear all; close all; l = -10; r = 10; N = 1000;

37
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
14.03.2016, 16:32  [ТС]
Как сдвинуть точки на середину столбцов? И как собственно их соединить, как я описал выше?

Начало, если интересно, здесь
Гистограмма. Отображение столбцов
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
15.03.2016, 22:38  [ТС]
Подмучил немного. Добавил фальш интервалы. В таблице "N" теперь необходимо первое и последние значения ставить равными нулю. Но с точками все та же беда. Избавился от на фиг не нужных массивов. Если делать через AddXY - столбцы накладываются друг на друга.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.DRAWClick(Sender: TObject);
begin
 Form1.HISTOSer.Clear;
 Form1.HISTOSer.BarWidthPercent:=100;
 Form1.HISTOSer.OffsetPercent:=50;
 Form1.HISTOSer.Marks.Visible:=false;
 for l:=0 to CLASSNUM-1 do
 Form1.HISTOSer.Add(StrToInt(TABLE2.Cells[0,l+1]),TABLE.Cells[0,l+1],clGreen);
 Form1.HISTOSer.Add(0,IntToStr(XMAX),clGreen);
   for l := 1 to TABLE.RowCount do
     begin
      X:=StrToFloat(TABLE.Cells[0,l]);
      Z:=X/2;
      Form1.POINTSer.Add(StrToInt(TABLE2.Cells[0,l]),FloatToStr(z));
     end;
 end;
Вложения
Тип файла: 7z Задача4.1.7z (2.57 Мб, 7 просмотров)
0
 Аватар для snake32
3518 / 1701 / 236
Регистрация: 26.02.2009
Сообщений: 8,551
Записей в блоге: 6
16.03.2016, 11:29
Krutko, а вы не пробовали рисовать свою гистограмму на PaintBox через Canvas? Значительно гибче инструмент, но, конечно, требует больше кода.
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
16.03.2016, 14:42  [ТС]
snake32, к сожалению задание сделать Tcchart'е.
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
16.03.2016, 14:49  [ТС]
Насколько я понял, отрисовка гистограммы мешает работе отрисовоки точек и на оборот. Т.к. искусственного смещения точек не происходит. Хотя пресчитывает координаты верно...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.DRAWClick(Sender: TObject);
begin
 DELTA:=StrToFloat(SHAG.Text);
 Form1.HISTOSer.Clear;
 Form1.HISTOSer.BarWidthPercent:=100;   //Толщина столбцов
 Form1.HISTOSer.OffsetPercent:=50;      //сдвиг столбцов относительно осей координат
 Form1.HISTOSer.Marks.Visible:=false;
   //отрисовка гистограммы по данным из таблиц:
 for l:=0 to CLASSNUM+1 do
   Form1.HISTOSer.Add(StrToInt(TABLE2.Cells[0,l+1]),TABLE.Cells[0,l+1],clGreen);
   Form1.HISTOSer.Add(0,FloatToStr(XMAX+DELTA),clGreen);   //Нулевой столбец
 for l := 1 to TABLE.RowCount do
   begin
    X:=StrToFloat(TABLE.Cells[0,l]); //кордината Х
    X:=X+DELTA/2; // сдвиг координаты
    Form1.Input.Cells[0,l]:=FloatToStr(X);
   end;
    for l:=0 to CLASSNUM+1 do
     Form1.POINTSer.Add(StrToInt(TABLE2.Cells[0,l+1]),Input.Cells[0,l+1]); //отрисовка точек
 end;
Вложения
Тип файла: 7z Задача4.4.7z (2.57 Мб, 3 просмотров)
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
18.03.2016, 16:56  [ТС]
Акт.2.
Перенос данных из одного stringgrid в другие
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
23.03.2016, 16:34  [ТС]
Удалось соединить середины вершин гистограмы через одну. Правда на другом Chartr'e. Прикладываю проект.
Вложения
Тип файла: 7z Задача4.8.7z (2.58 Мб, 5 просмотров)
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
23.03.2016, 16:57  [ТС]
Встал следующий вопрос. Как считать координаты всех точек, из которых состоит линия(т.е. рассмотреть линию как набор последовательных точек) в TChart'e?
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
30.03.2016, 12:12
Сделал третью красную линию аппроксимирующую две первые. Также произвольную генерацию значений N. Значения по умолчанию в полях ввода. После нажатия кнопок "Start" и "DRAW", если нажать ещё раз "Start", то выводилось сообщение об ошибке и программа не работала. Долго боролся с этим: сделал установку начальных значений таблиц и графиков, заменил real с extended (более точный тип), но только когда установил размеры массивов NUM (сейчас это NUM1) и NUM2 на единицу больше, то программа стала правильно работать.
Заметил, что Ваши циклы слишком вложены в друг друга, поэтому может быть они не правильно работают.
Прилагаю изменённый проект на Delphi.
Вложения
Тип файла: zip Задача4.8.zip (4.35 Мб, 5 просмотров)
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
12.04.2016, 14:11  [ТС]
unifikator, доброго времени суток! Можете подсказать, как сгладить аппроксимирующую линию и наложить ее вместе с другими двумя( которые соединяют вершины гистограмм) на саму гистограмму(т.е. отрисовать все в одном TCharte) ?
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 16:33
Krutko, Здравствуйте!
Может быть в современной версии Delphi можно сгладить график в компоненте Chart, но раньше он сглаживался только в компоненте TeeChart с помощью TSmoothingFunction. Можно сгладить график в компоненте Chart с помощью математического преобразования значений, например, с использованием полиномов регрессии. Но при любом сглаживании уже будет трудно проследить как графики соединяют вершины диаграммы и располагаются относительно друг друга. Поэтому, я не стал делать сглаживание.
Я удалил второй компонент с графиками GRAF. И создал графики POINTSer, POINTSer2 и POINTSer3 на компоненте первом HISTO. Как я понимаю, первый график должен проходить через чётные вершины диаграммы, второй - через нечётные, а третий (красный) - между ними. Я записал для вывода этих графиков:
Delphi
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
27
28
  POINTSer.Clear;
  POINTSer2.Clear;
  POINTSer3.Clear;
 for l := 0 to histoser.XValues.Count-1 do
 begin
   if l mod 2=0   then
   POINTSer.AddXY(histoser.XValues.Value[l],histoser.YValues.Value[l],floattostr(histoser.XValues.Value[l]),clblue)
  else
   POINTSer2.AddXY(histoser.XValues.Value[l],histoser.YValues.Value[l],floattostr(histoser.XValues.Value[l]),clyellow);
   if l>1 then
   begin
   if l mod 2=0 then
   begin
   qa:=(pointser.YValues.Value[l div 2 - 1]+pointser.YValues.Value[l div 2])/2;
   qp:=pointser2.YValues.Value[l div 2 - 1];
   end
   else
   begin
   qa:=(pointser2.YValues.Value[l div 2 - 1]+pointser2.YValues.Value[l div 2])/2;
   qp:=pointser.YValues.Value[l div 2];
   end;
   if qa<qp then
   qe:=qa
   else
   qe:=qp;
   POINTSer3.AddXY(histoser.XValues.Value[l-1],(abs(qa-qp))/2+qe,floattostr(histoser.XValues.Value[l-1]),clred);
   end;
  end;
Где histoser.XValues.Count - количество значений по X в гистограмме. XValues.Value[l] - X значение графика или диаграммы с номером l. Нумерация начинается с 0. YValues.Value[l] - Y значение.
Прилагаю изменённый проект.
Вложения
Тип файла: zip Task.zip (471.3 Кб, 4 просмотров)
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
12.04.2016, 16:47  [ТС]
unifikator, а есть ли возможность сгладить аппроксимирующую линию не основываясь на остальных двух линиях. Ведь идет расчет середин координат по игреку, а координаты по иксу заданы. Т.е. получается необходимо сгладить по известным данным только аппроксимирующую линию.
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 16:57
А я про такое сглаживание и говорю. Видимо, можно с помощью математического преобразования значений.
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
12.04.2016, 17:10  [ТС]
unifikator, т.е. все из-за того, что мы не знаем заранее числа точек?
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 17:22
Мы знаем число точек. В гистограмме histoser.XValues.Count, а в линии (histoser.XValues.Count/2).
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 17:27
На графике видно, что красная линия проходит чётко по середине между точками двух других линий, а если сделать сглаживание, то будет не видно. По крайне мере, будет видно не так чётко.
Миниатюры
Гистограмма. Точки и их соединение  
0
5 / 7 / 5
Регистрация: 13.11.2015
Сообщений: 267
12.04.2016, 17:29  [ТС]
unifikator, не так четко-это как?
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 17:52
То есть после сглаживания красная линия не будет проходить по середине между двумя другими линиями.
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 17:55
Вам задали сгладить аппроксимирующую линию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2016, 17:55
Помогаю со студенческими работами здесь

Найти работу силы по перемещению точки вдоль участка кривой от точки до точки
Найти работу силы f(x,y)=(2xy-4y)i - (x^2 -y)j по перемещению точки вдоль участка кривой x=3y^2 от точки А(0,0) до точки В(12,2) ...

гистограмма
помогите сделать легенду и чтобы квадратики были широкие uses crt; Var a,b:array of byte; x,y:string; ...

Гистограмма
Всем доброго времени суток, подскажите есть ли в питоне средства для создания гистограммы изображения? если нет, то может быть формулы...

Гистограмма
Доброе утро, граждане. Мне нужно сделать гистограмму, как ее строить? Нашел пару кодов, но сделать так, как хочу Я не могу. &lt;?php ...

Гистограмма
Всем привет! Нужно сделать диаграмму типа - гистограмма Series - CharType - Column Как сделать, что колонки были рядом с друг...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru