Краткая информация
Класс 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 (чтение и запись) | Задает дополнительные свойства, которые применяются к линейчатым диаграммам.
| Object |
boxPlot (чтение и запись) | Задает дополнительные свойства, которые применяются к ящичковым диаграммам.
| Object |
calendarHeatChart (чтение и запись) | Задает дополнительные свойства, которые применяются к календарным диаграммам интенсивности.
| Object |
dataClock (чтение и запись) | Задает дополнительные свойства, которые применяются к диаграмме хронометража данных.
| Object |
dataSource (чтение и запись) | Устанавливает источник данных диаграммы. Когда диаграмма экспортируется с использованием метода exportToSVG или отображается в ArcGIS Notebook, источник данных считывается и отображается на диаграмме. К допустимым источникам данных относятся пути к наборам данных, включая локальные наборы данных, пути UNC, URL-адреса служб и объекты arcpy.mp Layer. | String |
description (чтение и запись) | Задает описание диаграммы. Текст диаграммы отображается внизу вида диаграммы. | String |
displaySize (чтение и запись) | Задает размер диаграммы при экспорте с помощью метода exportToSVG или при отображении в ArcGIS Notebook. Значение должно быть указано как список из двух элементов где первый элемент является шириной диаграммы, а второй - высотой. | List |
histogram (чтение и запись) | Задает дополнительные свойства, которые применяются к гистограммам.
| Object |
legend (чтение и запись) | Задает свойства легенды диаграммы.
| Object |
line (чтение и запись) | Задает дополнительные свойства, которые применяются к линейным графикам.
| Object |
matrixHeatChart (чтение и запись) | Задает дополнительные свойства, которые применяются к диаграммы матрицы интенсивности.
| Object |
qqPlot (чтение и запись) | Задает дополнительные свойства, которые применяются к диаграммам КК.
| Object |
scatter (чтение и запись) | Задает дополнительные свойства, которые применяются к точечным диаграммам.
| Object |
scatterMatrix (чтение и запись) | Задает дополнительные свойства, которые применяются к матрицам точечных диаграмм.
| Object |
title (чтение и запись) | Задает заголовок диаграммы. Текст заголовка появляется в верхней части вида диаграммы и используется как надпись на панели Содержание на вкладке Содержание на вкладке По отображению. | String |
type (чтение и запись) | Задает тип создаваемой диаграммы. Допустимые опции включают следующее:
| String |
xAxis (чтение и запись) | Задает свойства оси x.
| Object |
yAxis (чтение и запись) | Задает свойства оси y.
| 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()
Пример кода
Добавьте объект 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)
Создает и экспортирует диаграмму на основе значений в списке. В примере показано, как список записывается в файл 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)