к оглавлению   к 4GL - визуальному программированию

Диаграммы

Объекты Chart и ChartObject

Excel позволяет создавать высококачественные диаграммы. Существенную помощь при их построении оказывают встроенные форматы диаграмм, предоставляющие большой спектр графического представления наборов данных. Как вся диаграмма, так и ее отдельные элементы легко удаляются, изменяются и добавляются. Добавляя в диаграмму пояснительный текст, стрелки, заголовки, легенду, изменяя заливку, узоры, типы линий и обрамление, можно добиться того, чтобы диаграмма представляла данные в наиболее наглядном виде.

В Excel различаются два вида диаграмм: внедренная на рабочий лист и созданная на специальном листе для диаграмм. Итак, семейство sheets (листы) включает в себя семейства: worksheets (рабочие листы) и charts (листы диаграмм). Объектами семейства charts являются листы диаграмм, но это семейство не включает в себя диаграммы, непосредственно встроенные в рабочие листы. Такие диаграммы принадлежат семейству chartobjects. Таким образом, объект ChartObject встроен В Объект Worksheet, a Chart — В workbook. Иерархия этих объектов показана на рис. 5.1. Свойства и методы этих объектов в основном аналогичны.

Рис. 5.1. Иерархия объектов Chart и ChartObject

Свойства объекта Chart

Перечислим основные свойства объекта chart и семейства charts.

ChartArea

Возвращает объект ChartArea — область на листе, отведенная под диаграмму. В следующем примере устанавливается цвет элементов объекта ChartArea.

With Charts { "Диаграмма")

.ChartArea . Interior . Colorlndex = 3 . Border

. Colorlndex = 5

End With

PlotArea

Возвращает объект PlotArea — часть области ChartArea, отведенная непосредственно под диаграмму. В следующем примере устанавливается Цвет объекта PlotArea:

Charts (1) . PlotArea . Interior . Colorlndex = 8

ChartTitle

Возвращает объект ChartTitle, являющийся заголовком диаграммы. В следующем примере задается заголовок диаграммы отчет :

With Charts ( "Отчет")

.HasTitle = True

. ChartTitle

. Text = "Продажи за май"

End With

ChartType

Возвращает тип диаграммы:

xlArea, xlBar,xlColumn, xlLine, xlPie, xlRadar, xlXYScatter, xlCombination, xl3DArea, xlSDBar, xl3DColumn, xl3DLine, xl3DPie, xlSDSurface, xlDoughnut

Legend

Возвращает объект Legend. Используется для изменения легенды. Например:

ChartObjects (1).Chart. Legend. Font .Bold = True

Rotation

Возвращает угол поворота 3-мерной диаграммы вокруг z-оси. Допустимыми являются значения от 0° до 360°. По умолчанию принимается угол, равный 20°

Elevation

Возвращает угол возвышения для обзора трехмерной диаграммы. Допустимыми являются значения от —90° до 90°. По умолчанию принимается угол, равный 15°

PlotBy

Допустимые значения: xlCoiumns (столбцы используются как ряды данных при построении диаграммы), xlRows (строки используются как ряды данных при построении диаграммы)

PlotVisibleOnly

Допустимые значения: True (диаграмма строится только по видимым ячейкам), False (в противном случае)

Floor, Corners, Walls

Возвращают соответственно объекты Floor, Corners, walls, используемые при построении трехмерных диаграмм. При отображении таких диаграмм для создания иллюзии трехмерности диаграмма отображается на фоне открытого куба, основание которого задается объектом Floor, углы — Corners, а две боковые стенки — wails. В следующем примере устанавливаются цвета объектов Floor и walls и выбирается объект corners:

With Charts (1) .. Floor . Interior . Colorlndex = 5 .Walls. Border. Colorlndex = 3 /Corners . Select End With

AutoScaling

Допустимые значения: True (трехмерная диаграмма автоматически масштабируется так, чтобы по размеру совпадать с двумерной), False (диаграмма не масштабируется)

DepthPercent, Height Per cent

Применяется только к трехмерным диаграммам. Возвращает глубину и высоту диаграммы в процентах к ее ширине

DisplayBlasnksAs

Допустимые значения:

  • xlNotPiotted (при построении диаграммы пустые ячейки игнорируются)
  • xlInterpoiated (значения в пустых ячейках интерполируются)
  • xlZero (значения в пустых ячейках считаются равными нулю)

Protect Contents, ProtectData, ProtectDrawingObjects, Protect Formatting, ProtectGoalSeek, Protect ionMode, ProtectionSelection,

Возвращает True, если указанный элемент диаграммы имеет защиту, и False — в противном случае

HasAxis, HasDAtaTable, HasLegend, HasTitle

Возвращает True, если указанный элемент имеется на диаграмме, и False — в противном случае

 

Методы объекта Chart

В данном разделе перечислены основные методы объекта chart.

Метод chartwizard применяется для построения и изменения существующей диаграммы. С помощью метода chartwizard, в отличие от команды Мастер диаграмм (ChartWizard), используемой для построения диаграммы вручную, нельзя задать все возможные свойства диаграммы. Он позволяет выполнить основную работу, а детали строятся с привлечением других свойств и методов объекта chart.

Синтаксис:

Chartwizard(Source, Gallery, Format, PlotBy,

CategoryLabels, SeriesLabels, HasLegend, Title,

CategoryTitle, ValueTitle, ExtraTitle)

Аргументы:

Source

Диапазон, по которому строится диаграмма

Gallery

Тип диаграммы.

Допустимые значения:

xiArea,

xlBar, xlColumn, xlLine, xlPie, xlRadar, xlXYScatter, xlCombination, xl3DArea, xl3DBar, xl3DColumn, xl3DLine, xl3DPie,

xl3DSurface, xlDoughnut или xl Default Auto Format

Format

Формат для данного типа диаграммы. Каждый тип имеет до десяти форматов

PlotBy

Допустимые значения: XIROWS (строки) и xlColumns (столбцы)

CategoryLabels

Указывает число строк (столбцов) с метками категорий (т. е. данных, отводимых под ось абсцисс)

SeriesLabels

Указывает число строк (столбцов) с метками рядов (т. е. данных, отводимых под заголовки)

HasLegend

Допустимые значения: True (отображать легенду) и False (не отображать легенду)

Title

Название диаграммы

CategoryTitle

Название оси абцисс

ValueTitle

Название оси ординат

ExtraTitle

Название z-оси для трехмерных диаграмм

Приведем несколько наиболее часто используемых методов объекта chart, позволяющих изменять детали диаграммы.

Axes

Возвращает семейство Axes, предназначенное для установки различных свойств осей. Для возвращения уникальной оси необходимо использовать следующий синтаксис метода:

Axes (Type, Group)

Аргументы:

  • Tуре — определяет тип оси. Допустимые значения:
    xlCategory, xlSeries И xlValue
  • Group — допустимые значения: xi Primary и
    xlSecondary

Пример:

With Charts (1) .Axes (xlCategory) .HasTitle = True . AxisTitle. Caption = "Доход" End With

SeriesCol lection

Возвращает семейство объектов series или объект этого семейства.

Синтаксис (для одного объекта из семейства):

SeriesCollection ( Index)

Синтаксис (для семейства объектов):

SeriesCollection

  • Index — имя или номер элемента

Пример:

Charts (1) . SeriesCollection (1) .HasDataLabels = True

SetSourceData

Устанавливает источник данных диаграммы.

Синтаксис:

SetSourceData (Source, PlotBy)

  • source — диапазон, на основе которого строится диаграмма
  • PlotBy — допустимые значения: xlColumns (данные расположены по столбцам) и XIROWS (данные расположены по строкам)

Пример:

ActiveChart . SetSourceData Source :=Sheets (1) .Range ("A1 : F1") , PlotBy:=xlRows


Export

Экспортирует диаграмму в графический формат.

Синтаксис:

Export (FileName, FilterName, Interactive)

  • FileName — имя файла, в который будет записана диаграмма в графическом формате
  • FilterName — имя графического фильтра в том виде, как он записан в графическом формате
  • Iinteractive — допустимые значения: True (для того чтобы показать диалоговое окно в процессе фильтрации) и False (в противном случае) Пример экспорта диаграммы в GIF-файл:

ActiveChart . Export FileName : ="График . gif " , FilterName := "GIF"

Location

Передвигает диаграмму на новое место.

Синтаксис:

Location (Where, Name)

  • where — указывает, будет ли диаграмма располагаться на новом листе диаграмм (xlLocationAsNewSheet), внедряться как объект на рабочий лист (xiLocationAsobject) или ее местоположение будет определяться автоматически
    (xlLocationAutomatic)
  • Name — имя листа диаграммы, если аргумент where принимает значение xlLocationAsNewSheet, либо имя рабочего листа, если аргумент where принимает значение xlLocationAsobject

Приведем несколько наиболее часто используемых методов семейства ChartObjects.

Add

Создает новую диаграмму.

Синтаксис:

Add (Left, Top, Width, Height)

  • Left, Top — координаты левого верхнего угла диаграммы
  • width, Height — ширина и высота диаграммы

Delete

Удаляет элемент семейства

CopyPicture

Копирует диаграмму в буфер обмена как рисунок.

Синтаксис:

CopyPicture (Appearance, Format, Size)

  • Appearance — устанавливает, каким образом диаграмма копируется. Допустимые значения: xlScreen (диаграмма копируется в том виде, в котором она отображается на экране) и xlPrinter (диаграмма копируется так, как она выглядит после вывода на печать)
  • Format — формат рисунка. Допустимые значения: xlPicture И xlBitmap

BringToFront

Отображает диаграмму на переднем плане

SendToBack

Отображает диаграмму на заднем плане

Select

Выбирает диаграмму

Приведем соответствие между построением графика вручную и аргументами метода ChartWizard на примере построения диаграммы из рис. 5.2.

Рис. 5.2. Пример диаграммы

Шаг 0

Выделите диапазон, на основе которого будет строиться диаграмма (рис. 5.3). Этот диапазон вводится в аргумент source. В данном примере аргументу source присваивается значение

Range ("A1:B11") .


Рис. 5.4. Диалоговое окно первого шага работы мастера диаграмм

Шаг 1

Нажмите кнопку Мастер диаграмм (Chart Wizard) чтобы отобразить на экране диалоговое окно первого шага мастера диаграмм (рис. 5.4). Выберите тип и вид диаграммы на первом шаге работы мастера диаграмм. Выбранный тип диаграммы вводится в аргумент Gallery, а тип — в аргумент Format. В данном случае аргументу Gallery присваивается значение

xlLine, а аргументу Format — 1.

Нажмем кнопку Далее > (Next >) для перехода к следующему шагу построения диаграммы.


Шаг 2
  • На вкладке Диапазон данных (Data Range) (рис. 5.5) второго шага работы мастера диаграмм при помощи переключателей Ряды в (Data Series In) укажите, как расположены ряды данных (в столбцах или строках), на основе которых строится диаграмма. 'Выбранное расположение вводится в аргумент piotBy. В данном случае аргументу PiotBy присваивается значение xicoiumns (в столбцах). В поле Диапазон (Data Range) вводится диапазон, на основе которого строится диаграмма. В данном случае =лист1 ! $A$1 : $B$11 .
  • На, вкладке Ряд (Series) (рис. 5.6) второго шага работы мастера диаграмм исключите РЯД! из списка Ряд (Series), нажав кнопку Удалить (Delete), т. к. первый ряд из диапазона данных будет отведен под метки оси абсцисс. Переменной categoryLabeis присваивается число столбцов (строк) диапазона данных, отводимых под значения, которые будут отображены на оси абсцисс. В данном случае аргументу CategoryLabeis присваивается значение 1, т. к. только первый столбец (A1:A11) отводится под значения, отображаемые на оси абсцисс. Кроме того, тот же диапазон данных =Лист1 ! $А$1 : $А$11 вводится в поле Подписи оси X (Category (X) Axis Labels). П В поле Значения (Values) приводится ссылка на диапазон, содержащий значения ряда данных. В данном случае =Лист1!$В$1:$В$11. В Переменную SeriesLabels водится число строк (столбцов) данных, отводимых под название различных ветвей диаграмм. Обычно эта переменная используется совместно с легендой для того, чтобы различать ветви диаграмм, построенные в одной и той же системе координат не только по цвету или внешнему виду, но и по этим названиям. В данном случае аргументу SeriesLabels присваивается значение 0, т. к. строится только одна диаграмма.
Нажмите кнопку Далее > (Next >) для перехода к следующему шагу построения диаграммы.

 

Рис. 5.5. Вкладка Диапазон данных диалогового окна второго шага работы мастера диаграмм

Рис. 5.6. Вкладка Ряд диалогового окна второго шага работы мастера диаграмм

ШагЗ

  • На вкладке Заголовки (Titles) (рис. 5.7) третьего шага работы мастера диаграмм заполняются поля Название диаграммы (Chart Title), Ось X (категорий) (Category (X) Axis) и Ось Y(значений) (Value (Y) Axis) для отображения названий диаграммы и осей. Эти названия вводятся в аргументы Title, CategoryTitie и vaiueTitie соответственно. В данном случае этим аргументам присвоены значения график, Аргумент и Функция.
  • На вкладке Легенда (Legend) третьего шага работы мастера диаграмм с помощью флажка Добавить легенду (Add Legend) устанавливается, надо ли отображать легенду. Результат установки вводится в аргумент Has Legend. В данном случае сбросим флажок Добавить легенду (Add Legend), после чего аргументу HasLegend присваивается значение False, т. к. легенда не отображается.
  • Нажмите кнопку Далее >(Next >) для перехода к следующему шагу построения диаграммы.

 

Рис. 5.7.Вкладка Заголовки диалогового окна третьего шага работы мастера диаграмм

ШагЗ

На четвертом шаге работы мастера диаграмм выбирается, строится ли диаграмма как внедренный объект в рабочий лист, или на отдельном листе диаграмм. Для создания диаграммы на отдельном листе выберите переключатель отдельном (As New Sheet), а для создания внедренной диаграммы — переключатель имеющемся (As Object In) (рис. 5.8). Выберем переключатель имеющемся (As Object In). Результат выбора не отображается в методе ChartWizard.

Нажатие кнопки Готово (Finish) завершает процесс создания диаграммы. Подытожим произведенные присвоения аргументам метода ChartWizard.

' Добавляется диаграмма в семейство диаграмм на активном

' рабочем листе

'

ActiveSheet.ChartObjects.Add(195, 30, 200, 190). Select

'

' Производится построение диаграммы методом ChartWizard

ActiveChart. ChartWizard Source : =Range ("A1:B11") ,

Gallery:= xlLine, Format :=1, PlotBy:= xlColumns,

CategoryLabels : =1,

SeriesLabels :=0,

HasLegend: =False, Title := "График", CategoryTitle : = "Аргумент",

ValueTitle : ="Функция"

Ту же самую диаграмму, не используя метод ChartWizard, можно построить с помощью следующей последовательности инструкций:

Charts . Add

ActiveChart. ChartType = xlLine

ActiveChart . SetSourceData

Source :=Sheets('ЛИCT3").

Range ( "Bl : Bll" ),

PlotBy : =xlColumns ActiveChart. SeriesCollection (1) .XValues = "=Лист3 !R1C1:R11C1"

ActiveChart .Location Where:=xlLocationAsObject,

Nаmе:="ЛистЗ" With ActiveChart

.HasTitle = True

. ChartTitle. Characters. Text = "График"

.Axes (xlCategory, xlPrimary)

.HasTitle = True .Axes (xlCategory, xlPrimary)

.AxisTitle. Characters. Text = "Аргумент"

.Axes (xlValue, xlPrimary)

.HasTitle = True .Axes (xlValue, xlPrimary)

.AxisTitle. Characters. Text = "Функция"

.HasLegend = False

End With


 

Рис. 5.8. Диалоговое окно четвертого шага работы мастера диаграмм

Линия тренда

С помощью диаграммы легко можно анализировать тренды и делать прогнозы. Вручную линия тренда на диаграмме добавляется с помощью команды Диаграмма, Добавить линию тренда (Chart, Add Trendline).

Все линии тренда, соответствующие данному ряду данных, образуют семейство Trendlines, элементами которого являются объекты Trendline (линия тренда).

Основными методами семейства Trendiines являются метод Add, добавляющий новый элемент в семейство, и метод item, возвращающий конкретный элемент семейства.

Приведем описание метода Add семейства Trendiines.

Add

Добавляет новый элемент в семейство Trendlines.

Синтаксис:

Add (Type, Order, Period, Forward, Backward, Intercept, DisplayEquation, DisplayRSquared, Name)

  • Tуре — устанавливает тип линии тренда. Допустимые значения: xlLinear (линейная), xlLogarithmic (логарифмическая), xiExponential (экспоненциальная), xlPolynomial (полиномиальная) , xlMovingAvg (скользящее среднее) и xlPower (степенная)
  • Oorder — устанавливает порядок линии тренда. Допустимые значения: целые числа в интервале от 2 до 6. Используется, если аргумент туре принимает значение xlPolynomial
  • Period — период тренда. Допустимые значения: целое не меньше 1, но меньше числа точек, по которым строится тренд.

Используется, если аргумент туре принимает значение xlMovingAvg.

  • Forward — прогнозируемое число точек на будущее (вперед), для предсказания значений в соответствии с трендом
  • Backward — прогнозируемое число точек в прошлом (назад), для предсказания значений в соответствии с трендом
  • intercept — пересечение с осью ординат
  • DisplayEquation — допустимые значения: True (уравнение тренда отображается на диаграмме) и False (в противном случае)
  • DisplayRSquared допустимые значения: True (отображается квадрат коэффициента корреляции) и False (в противном случае)
  • Name — строка, задающая имя линии тренда

Из свойств семейства Trendlines отметим только свойство count, возвращающее число элементов этого семейства.

Приведем соответствие между построением линии тренда вручную и аргументами метода Add семейства Trendiines.

Шаг 1

  • Активизируйте диаграмму, где надо построить линию тренда.
  • Выберите команду Диаграмма, Добавить линию тренда (Chart, Add Trendline) (рис. 5.9).

Шаг 2

На вкладке Тип (Туре) появившегося диалогового окна Линия тренда (Trendline) (рис. 5.10):

  • В списке Построен на ряде (Based on Series) выбирается ряд данных, по которому строится линия тренда. В данном случае ряд данных только один.
  • В группе Построение линии тренда (аппроксимация и сглаживание) (Trend/Regression Type) выбирается один из шести видов линии тренда. Выберите Линейная (Linear).

ШагЗ

На вкладке Параметры (Options) диалогового окна Линия тренда (Trendline) (рис. 5.11) устанавливаются параметры линии тренда:

  • В группе Лазвание аппроксимирующей (сглаженной) кривой
    (Trendline Name) переключатель автоматическое (Automatic) устанавливает имя линии тренда такое же, как и у ряда данных, а переключатель другое (Custom) устанавливает имя, введенное в соответствующем поле. В данном случае выберем переключатель автоматическое (Automatic).
  • В группе Прогноз (Forecast) счетчики вперед на (Forward) и назад на (Backward) определяют, на сколько периодов вперед или назад надо прогнозировать данные при помощи линии тренда. В данном случае не будем заниматься прогнозом, и поэтому оба эти счетчика установим равными 0.
  • Флажок пересечение кривой с осью Y в точке (Set Intercept) позволяет установить конкретную точку, в которой тренд должен пересекать ось Y. В данном случае такого значения устанавливать не будем и поэтому сбросим этот флажок.
  • Флажок показывать уравнение на диаграмме (Display Equation on Chart) определяет, надо ли отображать уравнение линии тренда на диаграмме. В данном случае будем выводить уравнение, и, следовательно, установим этот флажок.
  • Флажок поместить на диаграмму величину достоверности аппроксимации (R^2) (Display R-squared) определяет, надо ли отображать квадрат коэффициента корреляции на диаграмме. Установим этот флажок, тем самым обеспечив вывод квадрата коэффициента корреляции на диаграмму.


Рис. 5.9. Построение линии тренда для объема продаж по неделям

Рис. 5.10. Вкладка Тип диалогового окна Линия тренда

Рис. 5.11. Вкладка Параметры диалогового окна Линия тренда

Шаг 4

Нажмите кнопку ОК. Линия тренда построена на диаграмме (рис. 5.12). Программно линия тренда строится с помощью следующих инструкций:

ActiveSheet . ChartObjects ( "Диагр.1").Activate

ActiveChart . ChartArea . Select

ActiveChart . SeriesCollection ( 1 ) . Trendlines . Add (Type : =xlLinear , Forward :=0, Backward :=0, DisplayEquation:=True, DisplayRSquared:=True) .Select

 

Рис. 5.12. Линия тренда объема продаж

к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, что такое "Большой Взрыв"?
Согласно рупору релятивистской идеологии Википедии "Большой взрыв (англ. Big Bang) - это космологическая модель, описывающая раннее развитие Вселенной, а именно - начало расширения Вселенной, перед которым Вселенная находилась в сингулярном состоянии. Обычно сейчас автоматически сочетают теорию Большого взрыва и модель горячей Вселенной, но эти концепции независимы и исторически существовало также представление о холодной начальной Вселенной вблизи Большого взрыва. Именно сочетание теории Большого взрыва с теорией горячей Вселенной, подкрепляемое существованием реликтового излучения..."
В этой тираде количество нонсенсов (бессмыслиц) больше, чем количество предложений, иначе просто трудно запутать сознание обывателя до такой степени, чтобы он поверил в эту ахинею.
На самом деле взорваться что-либо может только в уже имеющемся пространстве.
Без этого никакого взрыва в принципе быть не может, так как "взрыв" - понятие, применимое только внутри уже имеющегося пространства. А раз так, то есть, если пространство вселенной уже было до БВ, то БВ не может быть началом Вселенной в принципе. Это во-первых.
Во-вторых, Вселенная - это не обычный конечный объект с границами, это сама бесконечность во времени и пространстве. У нее нет начала и конца, а также пространственных границ уже по ее определению: она есть всё (потому и называется Вселенной).
В третьих, фраза "представление о холодной начальной Вселенной вблизи Большого взрыва" тоже есть сплошной нонсенс.
Что могло быть "вблизи Большого взрыва", если самой Вселенной там еще не было? Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution