Краткая информация
Класс GraduatedColorsRenderer представляет собой определение метода отображения градуированными цветами для визуализации качественных различий значений объектов с помощью цветовой шкалы.
Обсуждение
Эти свойства действуют примерно так же, как и опции, использующиеся в приложении. Например, изменение числа классов автоматически перестроит граничные значения и их подписи. Если вы измените upperBound в ClassBreak, classificationMethod автоматически изменится на ManualInterval. Вам также необходимо будет вручную обновить labels и/или descriptions соответственно.
Свойства
Свойство | Описание | Тип данных |
breakCount (чтение и запись) | Целое число, представляющее количество классов, использующихся с текущим методом классификации. | Integer |
classBreaks (чтение и запись) | Список объектов ClassBreak, который обеспечивает доступ к отдельным объектам, таким как label и description, а так же к отдельным символам объектов. | List |
classificationField (чтение и запись) | Строка, представляющая имя поля набора данных, использующегося для метода классификации. | String |
classificationMethod (чтение и запись) | Строка, представляющая корректный метод классификации. Корректными значениями являются следующие:
| String |
colorRamp (чтение и запись) | Предоставляет доступ к объекту ColorRamp. | ColorRamp |
deviationInterval (чтение и запись) | Число с плавающей точкой двойной точности, представляющее корректный интервал среднеквадратического отклонения, доступный только если classificationMethod установлен на StandardDeviation. Допустимые значения: 1.0, 0.5, 0.333 и 0.25. Это те же параметры, которые доступны в приложении. | Double |
intervalSize (чтение и запись) | Число с плавающей точкой двойной точности, представляющее размер интервала, который доступен только если classificationMethod установлен на DefinedInterval. | Double |
lowerBound (чтение и запись) | Число с плавающей точкой, представляющее минимальное значение символа classificationField, которое должно быть отображено. Примечание:Значение lowerBound должно быть установлено только в пределах диапазона первого перерыва класса, в противном случае произойдет сбой. Максимальное значение изменяется в последнем перерыве класса путем изменения свойства upperBound. | Double |
normalizationField (чтение и запись) | Строка, представляющая имя поля в слое, использующегося для нормирования. | String |
normalizationType (чтение и запись) | Специальная строка, представляющая корректное ключевое слово нормирования. Например, чтобы удалить нормирование, попробуйте gradColors.renderer.nomalizationType = "<None>".
| String |
type (только чтение) | Возвращает строку, которая отображает тип способа отображения. | String |
Пример кода
В следующем скрипте сначала тестируется, поддерживают ли символы слоя свойство renderer, затем подтверждается, что метод отображения – SimpleSymbolRenderer. Далее метод отображения меняется на GraduatedColorsRenderer и меняет classificationField и breakCount. Наконец, ColorRamp меняется на цветовую схему с именем Голубой в фиолетовый.
import arcpy, os, sys
relpath = os.path.dirname(sys.argv[0])
p = arcpy.mp.ArcGISProject(relpath + r'\\GraduatedColors.aprx')
m = p.listMaps('Layers')[0]
l = m.listLayers('State*')[0]
sym = l.symbology
if hasattr(sym, 'renderer'):
if sym.renderer.type == 'SimpleRenderer':
sym.updateRenderer('GraduatedColorsRenderer')
sym.renderer.classificationField = 'Shape_Area'
sym.renderer.breakCount = 10
sym.renderer.colorRamp = p.listColorRamps('Cyan to Purple')[0]
l.symbology = sym
p.saveACopy(relpath + r'\\SavedOutput.aprx')
Следующий скрипт изменяет символы полигонального слоя, использующего отображение градуированными цветами. Он задает classificationField и breakCount, и повторно проходит каждую границу класса, изменяя upperBound, label, description и такие свойства символов, как color, outlineColor и size. В формат надписей границ вносится разделитель разрядов. Цвет заливки меняется от красного к синему, цвет рамки – от синего к красному, размер у каждой границы увеличивается.
# -*- coding: utf-8 -*-
import arcpy, os, sys, locale
relpath = os.path.dirname(sys.argv[0])
p = arcpy.mp.ArcGISProject(relpath + r"\\GraduatedColors.aprx")
m = p.listMaps("Layers")[0]
l = m.listLayers("Natural*")[0]
sym = l.symbology
sym.renderer.classificationField = "Shape_Area"
sym.renderer.breakCount = 7
breakVal = 100000000000
cv = 0
lw = 1
for brk in sym.renderer.classBreaks:
brk.upperBound = breakVal
brk.label = "\u2264" + str(locale.format("%d", breakVal, grouping=True))
brk.description = "Description " + str(cv)
brk.symbol.color = {'HSV' : [cv, 100, 100, 100]}
brk.symbol.outlineColor = {'HSV' : [240-cv, 100, 100, 100]}
brk.symbol.size = lw
breakVal +=100000000000
cv += 40
lw += 0.5
l.symbology = sym
p.saveACopy(relpath + r'\\SavedOutput.aprx')
Следующий скрипт изменяет значения свойств lowerBound и upperBound для метода отображения символами classificationField. Он также использует доступ CIM Python для отображения значений, выходящих за пределы диапазона classificationField, с использованием символа по умолчанию, который генерируется автоматически.
p = arcpy.mp.ArcGISProject('current')
m = p.listMaps('LowerBoundResult')[0]
l = m.listLayers()[0]
if hasattr(l.symbology, 'renderer'):
if l.symbology.renderer.type == 'GraduatedColorsRenderer':
sym = l.symbology
#Set lowerBound set on Renderer
sym.renderer.lowerBound = 5
#Set upperBound set on upper ClassBreak
sym.renderer.classBreaks[-1].upperBound = 96
l.symbology = sym
#Show values out of range using Python CIM Access
l_cim = l.getDefinition('V3')
l_cim.renderer.useDefaultSymbol = True
l_cim.renderer.defaultLabel = "Out of range"
l.setDefinition(l_cim)