Страницы: 1
RSS
Получение координат с графика
 
Делаю программу расчета параметров в соответствии с ГОСТом: "... В этом случае значение оптимальной влажности принимают на 1,0 % - 1,5 % менее влажности wi, при которой происходит отжатие воды. Значение максимальной плотности принимают по соответствующей ей ординате."  
Значение влажности -1% получить не проблема, а вот как получить соответствующее ей значение плотности не знаю.  
Догадываюсь что формулы коэффициентов тренда от ZVI могли бы помочь - http://www.planetaexcel.ru/forum.php?thread_id=14149  
Однако есть случаи:  
1) Когда линия тренда далека от графика;  
2) При расчете координат по формулам тренда результат на совпадает с графиком.  
Голову сломал а как реализовать не придумал...
 
Пример в архиве.
 
Пример, для выполнения запустите процедуру GetChart в Module1. При щелчке в области диаграммы будут меняться значения в ячейках H2, I2. Думаю, пересчёт из пространства координат Chart в пространство PlotArea (реальных координат) сделаете самостоятельно.  
 
Можно также поискать в итернете и как вычислять параметры кубического сплайна для получения координат (сглаженная линия, проходящая через точки данных на него похожа).
 
Извиняюсь, файл не приложил
 
Anvg, благодарю за отзывчивость!  
Только при запуске процедуры GetChart в Module1 возникает ошибка '438'  
"Object doesn't support this property or method"
 
Скорее всего у вас 2003 Excel. У меня 2010 и старого, увы, нет.
 
Попробуйте в качестве инициализирующей процедуры  
Public Sub GetChart2003()  
   If ActiveSheet.ChartObjects.Count > 0 Then  
       Set FChartHandler = New ChartHandler  
       FChartHandler.Create ActiveSheet.ChartObjects(1).Chart, ActiveSheet  
   End If  
End Sub
 
GetChart2003() работает!  
Только пересчёт из пространства координат Chart в пространство PlotArea (реальных координат) самостоятельно НЕ сделал...
 
Что там сложного?  
FChart_MouseDown x, y идёт в экранных координатах (pixel) от левого верхнего угла ChartObject. Лучше для этого передавать ChartObject в ChartHandler.  
Используя PointsToScreenPixelsX, PointsToScreenPixelsY объекта ActiveWindow пересчитываем координаты ChartObject из point в pixel. Находим ширину высоту в пикселах, пересчитываем щелчёк в point. По данным положения PlotArea находим относительные координаты щелчка в PlotArea в point. По данным минимума и максимума требуемых значений находим коэффициенты пересчёта из координат в point в требуемые. Вот и всё. Успехов!
 
(О_О)  
Не подумайте что хочу садиться на шею... Только в VBA я не силен и попытки написать подобный код займут неделю если не две.  
Прошу пример... Если не сложно!
 
Прицел с выводом координат :-)
 
Ещё пример кусочно-линейной интерполяции графика был здесь:  <BR>http://www.planetaexcel.ru/forum.php?thread_id=5306&page_forum=2
Страницы: 1
Наверх