Настройка осиDelphi , Синтаксис , Математика
Автор: Lookin { **** UBPFD *********** by delphibase.endimus.com **** >> Настройка сетки графика по оси ординат. Имеет смысл при передаче данных в другие пакеты, использующие графическое представление данных (например, в Excel). Зависимости: uses Chart, TeEngine, Math; Автор: lookin Copyright: lookin Дата: 25 декабря 2002 г. ***************************************************** } //для использования в Delphi procedure CalcAxis(NChart: TChart); var step, ymx, ymn, rmx, rmn, raz: double; i, n, m, d: integer; begin with NChart do begin ymx := -10000000000; ymn := 10000000000; m := 0; n := 0; for i := 0 to SeriesCount - 1 do if Series[i].XValues.Count <> 0 then begin if Series[i].YValues.MaxValue > ymx then ymx := Series[i].YValues.MaxValue; if Series[i].YValues.MinValue < ymn then ymn := Series[i].YValues.MinValue; end; rmx := ymx; rmn := ymn; while ymn < 0 do begin ymn := ymn + 100; ymx := ymx + 100; Inc(m); end; raz := ymx - ymn; while raz < 100 do begin ymn := ymn * 10; ymx := ymx * 10; raz := ymx - ymn; Inc(n); end; ymx := Ceil(ymx); ymn := Floor(ymn); d := trunc(ymx) div 100; ymx := (d + 1) * 100; d := trunc(ymn) div 100; ymn := d * 100; raz := ymx - ymn; step := raz / 5; ymx := ymx / (Power(10, n)) - m * 100; ymn := ymn / (Power(10, n)) - m * 100; step := step / (Power(10, n)); d := 0; for i := 1 to 5 do if (d = 0) and (ymn + step * i > rmx) then d := i; if d <> 0 then ymx := ymn + step * d; d := 0; for i := 1 to 5 do if (d = 0) and (ymn + step * i < rmn) then d := i; if d <> 0 then ymn := ymn + step * d; with LeftAxis do begin Automatic := false; Increment := step; Minimum := -100000000000; Maximum := ymx; Minimum := ymn; end; end; end; //для использования в Excel в качестве макроса (Visual Basic) Function SetAxisRange(CChart As Chart, ByRef AMax As Double, ByRef AMin As Double, ByRef AStep As Double) Dim Step, RMax, RMin, Max, Min, Raz As Double Dim I, J, N, M, d As Integer Max = -1000000 Min = 1000000 For I = 1 To CChart.SeriesCollection.Count ReDim VArray(UBound(CChart.SeriesCollection(I).Values)) VArray = CChart.SeriesCollection(I).Values For J = 1 To UBound(VArray) If VArray(J) > Max Then Max = VArray(J) If VArray(J) < Min Then Min = VArray(J) Next J Next I RMax = Max RMin = Min N = 0 M = 0 If Max <> Min Then While Min < 0 Min = Min + 100 Max = Max + 100 M = M + 1 Wend Raz = Max - Min While Raz < 100 Min = Min * 10 Max = Max * 10 Raz = Max - Min N = N + 1 Wend Max = Int(Max) + 1 Min = Int(Min) d = Max \ 100 Max = (d + 1) * 100 d = Min \ 100 Min = d * 100 Raz = Max - Min Step = Raz / 5 AStep = Step / (10 ^ N) AMin = Min / (10 ^ N) - M * 100 AMax = Max / (10 ^ N) - M * 100 d = 0 For I = 1 To 5 If d = 0 Then If (AMin + AStep * I) > RMax Then d = I End If Next I If d <> 0 Then AMax = AMin + AStep * d d = 0 For I = 1 To 5 If d = 0 Then If (AMin + AStep * I) < RMin Then d = I End If Next I If d <> 0 Then AMin = AMin + AStep * d End If End Function Пример использования: CalcAxis(Form1.Chart1); Привет! Я переведу текст на русский язык. Процедура Delphi Эта процедура принимает объект TChart в качестве входного параметра и устанавливает свойства левого оси этого графика на основе максимальных и минимальных значений всех серий, отображенных на этом графике. Вот шаг за шагом, что она делает:
Функция Visual Basic Эта функция принимает объект Chart и три параметра ByRef: AMax (максимальное значение), AMin (минимальное значение) и AStep (шаг). Вот шаг за шагом, что она делает:
Пример использования Чтобы использовать эту процедуру или функцию, вы бы вызвали ее с объектом графика как аргументом, например:
или
Это устанавливает диапазон оси для указанного графика на основе максимальных и минимальных значений его серий. Настройка оси - это функция, позволяющая автоматически настроить масштаб оси в графике по ординате для передачи данных в другие пакеты, использующие графическое представление данных. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |