BarSizeParam ================= .. currentmodule:: axioma.render .. class:: BarSizeParam Параметры масштабирования столбчатой диаграммы. Содержит соответствие между масштабом карты, значения по заданному выражению и размером диаграммы .. py:method:: BarSizeParam() Конструктор со значениями по-умолчанию .. py:method:: BarSizeParam(scale, value, size) Конструктор :param scale: Значение масштаба карты :type scale: :class:`float` :param value: Значение, соответствующая масштабу карты и размеру диаграммы :type value: :class:`float` :param size: Максимальный размер диаграммы :type size: :class:`float` .. py:attribute:: mapScale Значение масштаба карты :type: float .. py:attribute:: value Значение, соответствующая масштабу карты и размеру диаграммы :type: float .. py:attribute:: size Максимальный размер диаграммы :type: :class:`~axioma.render.UnitValue` BarThematicStyleProvider ======================== .. currentmodule:: axioma.render .. class:: BarThematicStyleProvider Класс провайдера стилей для тематического слоя :class:`~axioma.render.BarThematicLayer` в виде столбчатой диаграммы. Унаследован от: :class:`~axioma.render.ThematicStyleProvider`, :class:`~axioma.render.AllocationThematic`, :class:`~axioma.render.OrientationThematic` .. py:method:: BarThematicStyleProvider(layer) Конструктор :param layer: Ссылка на тематический слой, к которому привязан данный провайдер стилей. :type layer: :class:`~axioma.render.ThematicLayer` .. py:method:: BarThematicStyleProvider(other) Копирующий конструктор :param other: Исходный объект BarThematicStyleProvider, на базе которого необходимо сделать копию. :type other: :class:`BarThematicStyleProvider` .. py:method:: setExpressions(list) Задание списка выражений и соответствующих им стилей для каждого результирующего сегмента :param QList list: Список, содержащий параметры. :type list: :class:`list` [:class:`ThematicColorExpressionParam`] .. py:method:: setSizeParam(v) Задание параметров масштабирования :param v: Новое значение. :type v: :class:`~axioma.render.BarSizeParam` .. py:method:: sizeParam() Текущие параметры масштабирования :return: Установленные параметры масштабирования :rtype: :class:`~axioma.render.BarSizeParam` .. py:method:: isStacked() Располагать ли столбчатые диаграммы стопкой :return: True, если да. В противном случае False :rtype: :class:`bool` .. py:method:: setIsStacked(value) Установить вид расположения столбцов диаграммы. True, если необходимо расположить в виде стопки. По-умолчанию False :param value: Значение :type value: :class:`bool` .. py:method:: calculateMaximum(table) Расчет максимального значения по заданным выражениям по всем записям таблицы :param table: Анализируемая таблица :type table: :class:`~axioma.core.dp.Table` :return: Рассчитанное значение :rtype: :class:`float` .. py:method:: thematicColorExpressionParams() Список параметров по анализируемым сегментам :return: Список :rtype: :class:`list` [:class:`~axioma.render.ThematicColorExpressionParam`] .. py:method:: setThematicStyleParam(ind, param) Задание нового значения ( замена существующего ) параметра по его индексу :param ind: Индекс параметра :type ind: :class:`int` :param param: Параметр :type param: :class:`~axioma.render.ThematicColorExpressionParam` .. py:method:: thematicStyleParam(index) Запрос параметров сегмента по его индексу :param index: Индекс :type index: :class:`int` :return: Полученный по индексу параметр :rtype: :class:`~axioma.render.ThematicColorExpressionParam` .. py:method:: isGraduired() Является ли диаграмма масштабируемой в зависимости от полученного значения выражения :return: True, если размеры всех диаграмм тематического слоя имеют одинаковый размер. False, если размер масштабируется по выражению :rtype: :class:`bool` .. py:method:: setIsGraduired(value) Установить признак необходимости масштабирования диаграммы :param value: True, если производить масштабирование не требуется. False в противном случае :type value: :class:`bool` BarThematicLayer ================= .. currentmodule:: axioma.render .. class:: BarThematicLayer Тематический слой в виде столбчатой диаграммы. Унаследован от: :class:`~axioma.render.ThematicLayer` .. py:method:: BarThematicLayer(parent) Конструктор :param parent: Ссылка на слой, на базе которого создается данный тематический слой. :type parent: :class:`~axioma.render.FeatureLayer` .. py:method:: BarThematicLayer(other) Копирующий конструктор :param other: Исходный слой, на базе которого создается новый слой. :type other: :class:`~axioma.render.BarThematicLayer` .. py:method:: styleProvider() Возвращает текущий провайдер стилей для слоя. :return: Копия провайдера стиля, установленного для слоя на данный момент :rtype: :class:`~axioma.render.BarThematicStyleProvider` .. py:method:: setStyleProvider(provider) Устанавливает новый провайдер стилей для слоя. :param provider: Новый провайдер стилей. :type provider: :class:`~axioma.render.BarThematicStyleProvider` Пример использования: .. code-block:: python # Импорт from axioma.render import * from axioma.core.sql import * from axioma.mapinfo import * # Создание переменной для обеспечения возможности вычисления выражений runtime = SqlRuntime() # Добавление слоя в конец списка def addLayer(layer, thematic): layer.appendLayer(thematic); # Создание выражения по полю def makeExpressionForWorld(layer, attr): evaluator = FeatureExpressionEvaluator(runtime, layer.tableSchema()) if not evaluator.setExpression(axioma.app.mainWindow.tr(attr)): print(evaluator.errorString()) return evaluator # Создание пар стиль - выражение def makeStylePair(layer, color, attr): style = polygonStyleForColor(color) expr = makeExpressionForWorld(layer, attr) return ThematicColorExpressionParam(style, expr) # Создание списка выражений по цветам def makeExpressionListForWorld(layer): list = [] list.append(makeStylePair(layer, Qt.red, QObject().tr("Население"))) list.append(makeStylePair(layer, Qt.blue, QObject().tr("Pop_Male"))) list.append(makeStylePair(layer, Qt.green, QObject().tr("Pop_Fem"))) return list # Столбчатая диаграмма def addBarThematic(layer): barLayer = BarThematicLayer(layer) barStyleProvider = BarThematicStyleProvider(barLayer) barStyleProvider.setExpressions(makeExpressionListForWorld(layer)) # Установим выражения if len(barStyleProvider.thematicColorExpressionParams()) > 1: barStyleProvider.setIsStacked(True) # Стопкой barStyleProvider.setAllocationType(AllocationThematic.AT_LINEAR) # Распределение значений sizeParam = barStyleProvider.sizeParam() sizeParam.value = barStyleProvider.calculateMaximum(layer.table()) # максимальное значение sizeParam.mapScale = 160000000 # для масштаба sizeParam.diameter = UnitValue(Unit.cm(), 1.0) # размер в сантиметрах barStyleProvider.setSizeParam(sizeParam) barLayer.setStyleProvider(barStyleProvider) # Установка провайдера стиля addLayer(layer, barLayer)