Chart

Краткая информация

Класс Chart задает диаграмму ArcGIS Pro. Этот класс позволяет создавать различные типы диаграмм, включая линейчатые диаграммы, линейные графики, точечные диаграммы, матрицы точечных диаграмм, графики КК, гистограммы, ящичковые диаграммы и диаграммы хронометража данных. Этот класс также может использоваться для определения названия, осей и других свойств диаграмм.

Более подробно о диаграммах в ArcGIS Pro

Примечание:

Класс Chart является родительским классом для дополнительных классов в модуле arcpy.charts. Эти подклассы были разработаны как более удобная и интуитивно понятная альтернатива классу Chart.

Обсуждение

Диаграммы помогают представить информацию о пространственных объектах карты и отношениях между ними визуальным способом. Диаграммы также могут быть созданы для непространственных таблиц и могут отображать дополнительную информацию об объектах на карте или ту же информацию другим способом. Диаграммы дополняют карту, визуализируя информацию, которую можно просуммировать или извлечь из таблиц. В диаграмме вы можете быстро сравнить объекты и понять функциональные отношения между объектами, и таким образом визуализировать распределение, тренды и структуру данных, что трудно заметить иным способом.

Диаграммы могут быть созданы с использованием объекта Chart и добавлены в слой или таблицу в проекте ArcGIS Pro. Чтобы добавить диаграмму в слой в проекте, создайте объект Chart, настройте его свойства и свяжите объект Chart с arcpy.mp.Layer из arcpy.mp.ArcGISProject. Созданную таким образом диаграмму можно открыть в разделе Диаграммы под слоем на панели Содержание, когда этот проект открыт в ArcGIS Pro.

У объекта Chart есть свойство dataSource, которое можно использовать для создания диаграммы для источников данных, включая различные форматы классов пространственных объектов и таблиц, а также веб-слои (сервисы объектов). Диаграмму можно экспортировать в файл .svg для визуализации. Объекты Chartподдерживают расширенное представление в Блокнотах и могут быть визуализированы графически.

Пример диаграммы в блокноте

Синтаксис

 Chart (name)
ПараметрОписаниеТип данных
name

Имя диаграммы. Диаграмма должна иметь уникальное имя для каждого слоя. Имя используется только для идентификации; оно не отображается.

String

Свойства

СвойствоОписаниеТип данных
bar
(чтение и запись)

Задает дополнительные свойства, которые применяются к линейчатым диаграммам.

  • aggregation – статистическое вычисление, примененное к значениям, которые появляются в том же значении вдоль оси x. Поддерживается следующая статистика: COUNT, SUM, MEAN, MEDIAN, MIN и MAX. Отсутствие агрегирования означает, что каждое значение будет нанесено на диаграмму независимо от перекрывающихся или повторяющихся значений.
  • movingAveragePeriod – размер движущегося периода среднего.
  • multiSeriesDisplay – тип отображения для линейной диаграммы с несколькими сериями. Допустимые опции – это sideBySide, stacked и stacked100.
  • rotated – указывает, отображаются ли столбцы вертикально или горизонтально. По умолчанию столбцы отображаются вертикально. True поворачивает столбцы по горизонтали. False отображает столбцы по вертикали.
  • showMovingAverage – указывает, будет ли отображено движущееся среднее.
  • splitCategory – поле второй категории, которое добавляет отдельные серии или столбец для каждого уникального значения в поле.
Object
boxPlot
(чтение и запись)

Задает дополнительные свойства, которые применяются к ящичковым диаграммам.

  • rotated – определяет, как будут отображаться ящички, вертикально или горизонтально. По умолчанию ящички отображаются вертикально. True поворачивает ящички по горизонтали. False отображает ящички по вертикали.
  • showOutliers - указывает, будут ли отображаться выбросы как точки, которые выходят за линии усов. True отображает выбросы как точки. False включает выбросы в усы.
  • splitCategory – поле второй категории, которое добавляет отдельные серии или ящичек для каждого уникального значения в поле.
  • splitCategoryAsMeanLine – ящичковые диаграммы с несколькими сериями, которые создаются с использованием поля разбиения, могут отображаться как средние линии или как ящички, располагающиеся бок о бок. True отображает разделенные несколько серий в виде средних линий. False отображает разделенные несколько серий как ящички, располагающиеся бок о бок.
  • standardizeValues - ящичковые диаграммы, которые создаются из нескольких полей, по умолчанию стандартизируются. True отображает стандартизированные значения. False отображает нестандартизированные значения.
Object
calendarHeatChart
(чтение и запись)

Задает дополнительные свойства, которые применяются к календарным диаграммам интенсивности.

  • aggregation – статистический расчет, применяемый к значениям, агрегированным в каждой ячейке. Поддерживается следующая статистика: COUNT, SUM, MEAN, MEDIAN, MIN и MAX.
  • classCount – число классов, используемых в методе классификации.
  • classificationMethod – метод классификации, используемый для визуализации цвета ячейки. Поддерживаются следующие опции: equalIntervals, geometricalIntervals, naturalBreaks и quantiles.
  • nullPolicy – как отображаются суммированные ячейки, возвращающие значение null. Поддерживаются следующие опции: null и zero.
  • calendarType – описание пары единиц измерения времени, которые поддерживаются в диаграмме хронометража данных. Поддерживаются следующие опции: YEAR_MONTHSDAYS и WEEK_DAYSHOURS.
Object
dataClock
(чтение и запись)

Задает дополнительные свойства, которые применяются к диаграмме хронометража данных.

  • aggregation – статистический расчет, применяемый к значениям, агрегированным во времени. Поддерживается следующая статистика: COUNT, SUM, MEAN, MEDIAN, MIN и MAX.
  • classCount – число классов, используемых в методе классификации.
  • classificationMethod – метод классификации, используемый для визуализации цвета бина. Поддерживаются следующие опции: equalIntervals, geometricalIntervals, naturalBreaks и quantiles.
  • nullPolicy – как отображаются суммированные ячейки, возвращающие значение null. Поддерживаются следующие опции: null и zero.
  • timeUnitsRingWedge – описание пары единиц измерения времени, которые поддерживаются в диаграмме хронометража данных. Поддерживаются следующие опции:
    • YEARS_MONTHS
    • YEARS_WEEKS
    • YEARS_DAYS
    • WEEKS_DAYS
    • DAYS_HOURS
Object
dataSource
(чтение и запись)

Устанавливает источник данных диаграммы. Когда диаграмма экспортируется с использованием метода exportToSVG или отображается в ArcGIS Notebook, источник данных считывается и отображается на диаграмме. К допустимым источникам данных относятся пути к наборам данных, включая локальные наборы данных, пути UNC, URL-адреса служб и объекты arcpy.mp Layer.

String
description
(чтение и запись)

Задает описание диаграммы. Текст диаграммы отображается внизу вида диаграммы.

String
displaySize
(чтение и запись)

Задает размер диаграммы при экспорте с помощью метода exportToSVG или при отображении в ArcGIS Notebook. Значение должно быть указано как список из двух элементов где первый элемент является шириной диаграммы, а второй - высотой.

List
histogram
(чтение и запись)

Задает дополнительные свойства, которые применяются к гистограммам.

  • binCountколичество бинов, которые будут отображаться в гистограмме.
  • dataTransformationType – тип преобразования данных. Поддерживается следующие преобразования: none, logarithmic и squareRoot.
  • showComparisonDistribution - показывает, видна ли на гистограмме линия сравнения нормального распределения. True отображает линию. False скрывает линию.
  • showMean - показывает, видна ли на гистограмме линия среднего значения из статистики. True отображает линию. False скрывает линию.
  • showMedian - показывает, видна ли на гистограмме линия медианы из статистики. True отображает линию. False скрывает линию.
  • showStandardDeviation - показывает, видна ли на гистограмме линия стандартного отклонения из статистики. True отображает линию. False скрывает линию.
Object
legend
(чтение и запись)

Задает свойства легенды диаграммы.

  • visible – показывает, отображается ли легенда в виде диаграммы. True – отображает легенду. False - скрывает легенду.
  • title – заголовок, отображаемый для легенды.
Object
line
(чтение и запись)

Задает дополнительные свойства, которые применяются к линейным графикам.

  • aggregation – статистический расчет, применяемый к значениям, агрегированным в каждую ячейку времени. Поддерживается следующая статистика: COUNT, SUM, MEAN, MEDIAN, MIN и MAX. Отсутствие агрегирования означает, что каждое значение будет нанесено на диаграмму независимо от перекрывающихся или повторяющихся значений.
  • nullPolicy – как отображаются суммированные ячейки, возвращающие значение null. Поддерживаются следующие опции: null, zero и interpolate.
  • rotated – показывает, отображаются ли линии горизонтально или вертикально. По умолчанию линии отображаются вертикально. True вращает линии по вертикали. False отображает линии по горизонтали.
  • splitCategory – поле второй категории, которое добавляет отдельные серии или линию для каждого уникального значения в поле.
  • timeAggregationType – тип выравнивания временного интервала. К доступным опциям относятся equalIntervalsFromStartTime и equalIntervalsFromEndTime.
  • timeIntervalSizeпромежуток времени, который будет сгруппирован или объединен. Значение должно использоваться в сочетании с timeIntervalUnit.
  • timeIntervalUnits – временная единица, соответствующая timeIntervalSize. Допустимые опции включают: SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS и YEARS.
  • trimInCompleteTimeInterval – определяет, будут ли незавершенные временные интервалы в начале или в конце интервала данных (в зависимости от timeAggregationType) удалены из диаграммы. Незавершенные интервалы на диаграмме могут привести к ошибочным результатам, в которых рассматриваемый период меньше или больше указанного из-за различного количества времени в интервале. True урезает незавершенные интервалы. False не урезает неполные интервалы.
Object
matrixHeatChart
(чтение и запись)

Задает дополнительные свойства, которые применяются к диаграммы матрицы интенсивности.

  • aggregation – статистический расчет, применяемый к значениям, агрегированным в каждой ячейке. Поддерживается следующая статистика: COUNT, SUM, MEAN, MEDIAN, MIN и MAX.
  • classCount – число классов, используемых в методе классификации.
  • classificationMethod – метод классификации, используемый для визуализации цвета ячейки. Поддерживаются следующие опции: equalIntervals, geometricalIntervals, naturalBreaks и quantiles.
  • nullPolicy – как отображаются суммированные ячейки, возвращающие значение null. Поддерживаются следующие опции: null и zero.
Object
qqPlot
(чтение и запись)

Задает дополнительные свойства, которые применяются к диаграммам КК.

  • dataTransformationType – применяет преобразование к данным. Допустимые преобразования включают: none, logarithmic и squareRoot.
  • showReferenceLine - показывает, видна ли базовая линия в диаграмме КК. True отображает линию. False скрывает линию.
Object
scatter
(чтение и запись)

Задает дополнительные свойства, которые применяются к точечным диаграммам.

  • bubbleMinSize – минимальный размер точек пузырьковой диаграммы.
  • bubbleMaxSize – максимальный размер точек пузырьковой диаграммы.
  • showTrendLine - показывает, видна ли линия тренда в точечной диаграмме. True отображает линию. False скрывает линию.
Object
scatterMatrix
(чтение и запись)

Задает дополнительные свойства, которые применяются к матрицам точечных диаграмм.

  • fields – список имен полей для отображения в матрице. Требуется минимум три поля.
  • showAsRSquared – указывает, рассматриваются ли мини-диаграммы как значения R2. True отображает мини-диаграммы в виде значений R2. False отображает мини-диаграммы в виде точечных диаграмм.
  • showHistograms – указывает, отображаются ли гистограммы в матрице. True отображает гистограммы. False скрывает гистограммы.
  • showTrendLine - показывает, видны ли линии тренда в точечных диаграммах. True отображает линии. False скрывает линии.
Object
title
(чтение и запись)

Задает заголовок диаграммы. Текст заголовка появляется в верхней части вида диаграммы и используется как надпись на панели Содержание на вкладке По отображению Содержание на вкладке По отображению.

String
type
(чтение и запись)

Задает тип создаваемой диаграммы. Допустимые опции включают следующее:

  • bar
  • line
  • scatter
  • scatterMatrix
  • qqPlot
  • histogram
  • boxPlot
  • dataClock
  • calendarHeatChart
  • matrixHeatChart

String
xAxis
(чтение и запись)

Задает свойства оси x.

  • field – имя поля, отображаемого на оси X.
  • logarithmic – указывает, является ли ось логарифмической. True отображает логарифмическую ось. False отображает линейную ось. Это свойство применяется только для точечных диаграмм и линейных графиков.
  • minimum – минимальная граница оси.
  • maximum – максимальная граница оси.
  • sort – метод сортировки, примененный к этой оси. ASC используется для сортировки по возрастанию, а DESC - для сортировки по убыванию. Это свойство применяется только для линейчатых диаграмм.
  • title – подпись оси, отображаемая в диаграмме.
Object
yAxis
(чтение и запись)

Задает свойства оси y.

  • field – имя поля, отображаемого на оси y.
    • Для линейчатых диаграмм и линейных графиков это свойство можно задать списком имен полей.
    • Для диаграмм хронометража данных и календарных диаграмм интенсивности в этом параметре указывается числовое поле.
    • Для точечных диаграмм, field дополнительно принимает список из двух элементов, где первый – поле оси y, и второй – поле пропорционального символа.
    • Для диаграмм матрицы интенсивности, field дополнительно принимает список из двух элементов, где первый – поле оси y, и второй – числовое поле, которое будет агрегировано.
  • logarithmic – указывает, является ли ось логарифмической. True отображает логарифмическую ось. False отображает линейную ось. Это свойство применяется только для точечных диаграмм и линейных графиков.
  • maximum – минимальная граница оси.
  • minimum – максимальная граница оси.
  • sort – метод сортировки, примененный к этой оси. ASC используется для сортировки по возрастанию, а DESC - для сортировки по убыванию. Это свойство применяется только для линейчатых диаграмм.
  • title – подпись оси, отображаемая в диаграмме.
Object

Обзор метода

МетодОписание
addToLayer (layer_or_layerfile)

Добавление объекта диаграммы в слой или в автономную таблицу.

exportToSVG (path, width, height)

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

updateChart ()

Обновляет свойства диаграммы для синхронизации изменений между объектом и диаграммой, предварительно добавленной к слою.

Методы

addToLayer (layer_or_layerfile)
ПараметрОписаниеТип данных
layer_or_layerfile

The chart will be added to the target object. The layer_or_layerfile argument can be a Layer or a Table object.

Object

Обычно последним шагом после задания свойств диаграммы является добавление объекта диаграммы в слой или в таблицу, с помощью метода addToLayer.

Добавьте диаграмму к существующему слою.

import arcpy

aprx = arcpy.mp.ArcGISProject("current")
map = aprx.listMaps()[0]
censusLayer = map.listLayers('Census Block Groups')[0]

# Add chart object to a layer
chart.addToLayer(censusLayer)
exportToSVG (path, width, height)
ПараметрОписаниеТип данных
path

The path where the chart will be exported in SVG format.

String
width

The width of the output graphic.

Integer
height

The height of the output graphic.

Integer

В некоторых случаях вам может понадобиться сохранить диаграмму в графический формат, который можно совместно использовать и просматривать вне ArcGIS Pro. Преимуществом экспорта в формат SVG является то, что графические элементы и текст сохраняются, как векторные объекты, каждый из которых можно изменять в программе, работающей с векторной графикой. Размер графики SVG также можно изменить на любой другой без потери качества.

Экспортируйте диаграмму, содержащую источник данных слоя проекта в файл .svg.

import arcpy

aprx = arcpy.mp.ArcGISProject('current')
censusLayer = aprx.listMaps()[0].listLayers('Census Block Groups')[0]

# Set data source of chart object to a layer within current project
chart.dataSource = censusLayer

# Save the chart to file with dimensions width=500, height=500
chart.exportToSVG('populationByState.svg', 500, 500)

Экспортируйте диаграмму, содержащую источник данных сервиса объектов в файл .svg.

featureServiceURL = r'https://services1.arcgis.com/hLJbHVT9ZrDIzK0I/arcgis/rest/services/CrimesChiTheft/FeatureServer/0'

# Set data source of chart object to a feature service URL
chart.dataSource = featureServiceURL

# Save the chart to file with dimensions width=800, height=600
chart.exportToSVG('theftsPerBeat.svg', 800, 600)
updateChart ()

Обычно последним шагом после задания свойств диаграммы является добавление объекта диаграммы в слой с помощью метода addToLayer.

Для дальнейшего изменения свойств диаграммы можно изменить параметры исходной диаграммы, вместо создания новой. Затем можно использовать метод updateChart для синхронизации любых изменений с диаграммой, добавленной к слою. Это позволит отображаться изменениям, внесенным вами, на панели свойств Диаграмма и в виде диаграммы.

Используйте метод updateChart для синхронизации изменений свойств диаграммы в слое.

chart.addToLayer(myLayer)

# Further modification is necessary
chart.description = "Data from the U.S. Census Bureau"
chart.updateChart()

Пример кода

Диаграмма, пример 1

Добавьте объект Chart в объект arcpy.mp Layer, чтобы добавить диаграмму к слою.

import arcpy

aprx = arcpy.mp.ArcGISProject("current")
map = aprx.listMaps()[0]
censusLayer = map.listLayers('Census Block Groups')[0]
chart = arcpy.Chart('MyChart')

chart.type = 'scatter'
chart.title = 'Relationship between Percent Vacant (Housing) and Population Density'
chart.description = 'This chart examines the relationship between housing vacancy and population density.'
chart.xAxis.field = 'Per_Vacant'
chart.yAxis.field = 'Pop_Density'
chart.xAxis.title = 'Vacant Housing %'
chart.yAxis.title = 'Population Density (per Sq. Mile)'
chart.addToLayer(censusLayer)
Диаграмма, пример 2

Создает и экспортирует диаграмму на основе значений в списке. В примере показано, как список записывается в файл CSV, который затем можно использовать с целью создания диаграммы путем задания свойства dataSource.

import arcpy
import csv

temp_csv_file = r'c:\temp\data.csv'
out_svg_file = r'c:\temp\chart.svg'
# Data for automobile miles per gallon (MPG) and horsepower 
columns = ['mpg', 'horsepower'] 
data = [
    [18, 130], 
    [15, 165], 
    [26, 113],
    [18, 150],
    [28, 90], 
    [32, 61],
    [16, 150],
    [17, 140]
]

# Write this list to a CSV file
with open(temp_csv_file, 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')

    # Write column headers
    writer.writerow(columns)
    
    # Write data rows
    writer.writerows(data)

chart = arcpy.Chart('MyChart')
chart.type = 'scatter'
chart.title = 'Relationship between MPG and Horsepower'
chart.xAxis.field = 'mpg'
chart.yAxis.field = 'horsepower'
chart.dataSource = temp_csv_file
chart.exportToSVG(out_svg_file, width=750, height=400)