Skip To Content

Chart

Summary

The Chart class defines an ArcGIS Pro chart. The class allows you to create different types of charts, including bar charts, line charts, scatter plots, scatter plot matrices, QQ plots, histograms, box plots, and data clocks. The class can also be used to define the chart title, axes, and other properties.

Learn more about charts in ArcGIS Pro

Discussion

Charts assist in presenting information about map features and the relationship between them in a visual, easy-to-understand manner. Charts may also be created for nonspatial tables and can show both additional information about the features on the map or the same information in a different way. Charts are complementary to maps in that they simply and visually convey information that would generally be summarized numerically or explored from tables. With a chart, it is easy to quickly compare features to gain insight into the functional relationship between the features and thereby visualize the distribution, trends, and patterns in the data that would otherwise be difficult to see.

You can only create and add charts to layer or tables in an ArcGIS Pro project and map. Charts cannot be visualized, rendered, or exported outside of the ArcGIS Pro application.

Syntax

 Chart (name)
ParameterExplanationData Type
name

The name of the chart. A chart must have a unique name per layer. This name is only used for identification; it is not displayed.

String

Properties

PropertyExplanationData Type
bar
(Read and Write)

Sets additional properties that apply to bar charts.

bar propertyDescription

aggregation

The statistical calculation applied to values that occur at the same value along the x-axis. Supported statistics are COUNT, SUM, MEAN, and MEDIAN. No aggregation means that each value will be plotted on the chart regardless of overlap or recurring values.

rotated

Sets whether bars are viewed vertically or horizontally. Bars display vertically by default. True rotates bars horizontally, False displays bars vertically.

splitCategory

A second categorical field that adds a separate series or bar for each unique value in the field.

Object
boxPlot
(Read and Write)

Sets additional properties that apply to box plots.

boxPlot propertyDescription

rotated

Indicates whether boxes are viewed vertically or horizontally. Boxes are displayed vertically by default. True rotates boxes horizontally, False displays boxes vertically.

showOutliers

Indicates whether outliers are shown as points extending beyond the whiskers. True displays outliers as points, False includes outliers in whiskers.

splitCategory

A second categorical field that adds a separate series or box for each unique value in the field.

splitCategoryAsMeanLine

Multiple-series box plots created with a split field can be displayed as mean lines or as side-by-side boxes. True displays split multiple series as mean lines, False displays split multiple series as side-by-side boxes.

standardizeValues

Box plots created from multiple fields are standardized by default. True displays standardized values, False displays non-standardized values.

Object
dataClock
(Read and Write)

Sets additional properties that apply to data clocks.

dataClock propertyDescription

aggregation

The statistical calculation applied to values aggregated into each temporal. Supported statistics are COUNT, SUM, MEAN, and MEDIAN.

classCount

The number of classes used in the classification method.

classificationMethod

The classification method used to visualize bin color.

nullPolicy

How summarized bins returning a null value are displayed. Supported options are null and zero.

timeUnitsRingWedge

The description for the time-unit pair supported in the data clock chart. The following options are supported:

  • YEARS_MONTHS
  • YEARS_WEEKS
  • YEARS_DAYS
  • WEEKS_DAYS
  • DAYS_HOURS
Object
description
(Read and Write)

Sets the description of the chart. The description text appears at the bottom of the chart view.

String
histogram
(Read and Write)

Sets additional properties that apply to histograms.

histogram propertyDescription

binCount

The number of bins to display in the histogram.

dataTransformationType

The data transformation type. Supported transformations are none, logarithmic, and squareRoot.

showComparisonDistribution

Indicates whether the normal distribution comparison line is visible in the histogram. True displays the line, False hides the line.

showMean

Indicates whether the mean statistical line is visible in the histogram. True displays the line, False hides the line.

showMedian

Indicates whether the median statistical line is visible in the histogram. True displays the line, False hides the line.

showStandardDeviation

Indicates whether the standard deviation statistical line is visible in the histogram. True displays the line, False hides the line.

Object
legend
(Read and Write)

Sets properties of the chart legend.

legend propertyDescription

visible

Indicates whether the legend is visible in the chart view. True displays the legend, False hides the legend.

Object
line
(Read and Write)

Sets additional properties that apply to line charts.

line propertyDescription

aggregation

The statistical calculation applied to values aggregated into each temporal bin. Supported statistics are COUNT, SUM, MEAN, and MEDIAN. No aggregation means that each value will be plotted on the chart regardless of overlap or recurring values.

nullPolicy

How summarized bins returning a null value are displayed. Supported options are null, zero, and interpolate.

rotated

Indicates whether lines are viewed horizontally or vertically. Lines display horizontally by default. True rotates lines vertically, False displays lines horizontally.

splitCategory

A second categorical field that adds a separate series or line for each unique value in the field.

timeAggregationType

The time interval alignment type. Valid options include equalIntervalsFromStartTime and equalIntervalsFromEndTime.

timeIntervalSize

The span of time that will be binned or aggregated together. Must be used in conjunction with timeIntervalUnit.

timeIntervalUnits

The time unit that corresponds to the timeIntervalSize. Valid options include SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, and YEARS.

trimInCompleteTimeInterval

Determines whether incomplete time intervals at the start or end of the data span (depending on the timeAggregationType) will be removed from the chart. Incomplete intervals on a chart can cause misleading results in which the period in question is under or over reported due to a different amount of time in the interval. True indicates to trim these incomplete intervals, while False does not trim incomplete intervals.

Object
qqPlot
(Read and Write)

Sets additional properties that apply to QQ plots.

qqPlot propertyDescription

dataTransformationType

Applies a transformation to the data. Valid transformations include none, logarithmic, and squareRoot.

showReferenceLine

Indicates whether the reference line is visible in the QQ plot. True displays the line, False hides the line.

Object
scatter
(Read and Write)

Sets additional properties that apply to scatter plots.

scatter propertyDescription

bubbleMinSize

The minimum size for points in a bubble plot.

bubbleMaxSize

The maximum size for points in a bubble plot.

showTrendLine

Indicates whether the trend line is visible in the scatter plot. True displays the line, False hides the line.

Object
scatterMatrix
(Read and Write)

Sets additional properties that apply to scatter plot matrices.

scatterMatrix propertyDescription

fields

A list of field names to display in the matrix. A minimum of three fields is required.

showAsRSquared

Indicates whether mini-plots are viewed as R2 values. True displays mini-plots as R2 values, False displays mini-plots as scatter plots.

showHistograms

Indicates whether histograms are displayed in the matrix. True displays histograms, False hides histograms.

showTrendLine

Indicates whether trend lines are visible in the scatter plots. True displays the lines, False hides the lines.

Object
title
(Read and Write)

Sets the title of the chart. The title text appears at the top of the chart view, and is used as the label in the Contents pane on the List By Drawing Order List By Drawing Order tab.

String
type
(Read and Write)

Sets the type of chart to create. Valid options include:

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

String
xAxis
(Read and Write)

Sets properties of the x-axis.

xAxis propertyDescription

field

The name of the field to display on the x-axis.

For data clocks, this is where the date field is specified.

logarithmic

Indicates whether the axis is logarithmic. True displays logarithmic axis, False displays linear axis.

This property only applies to scatter plots and line charts.

maximum

The minimum axis bound.

minimum

The maximum axis bound.

sort

The sorting method applied to this axis. ASC for ascending sorting and DESC for descending sorting.

This property applies only to bar charts.

title

The label of the axis that displays on the chart.

Object
yAxis
(Read and Write)

Sets properties of the y-axis.

yAxis propertyDescription

field

The name of the field to display on the y-axis.

For bar or line charts, the property can be specified as a list of field names.

For data clocks this is where the number field is specified.

logarithmic

Indicates whether the axis is logarithmic. True displays logarithmic axis, False displays linear axis.

This property applies only to scatter plots and line charts.

maximum

The minimum axis bound.

minimum

The maximum axis bound.

sort

The sorting method applied to this axis. ASC for ascending sorting and DESC for descending sorting.

This property applies only to bar charts.

title

The label of the axis that displays on the chart.

Object

Method Overview

MethodExplanation
addToLayer (layer)

Adds the chart class to a layer.

updateChart ()

Updates chart properties to sync changes between the class and the chart previously added to a layer.

Methods

addToLayer (layer)
ParameterExplanationData Type
layer

The chart will be added to this target Layer object.

Layer
Return Value
Data TypeExplanation
Object

The Chart class will be unchanged, but the class' properties will be set into the layer definition and a new chart will be created.

After defining chart properties in the Chart class, the final step typically is to add the chart to a layer. Use the addToLayer method to accomplish this.

Set chart properties and add the chart to an existing layer.

import arcpy

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

c = arcpy.Chart('MyChart')
c.type = 'bar'
c.xAxis.field = 'State'
c.yAxis.field = 'Population'
c.addToLayer(censusLayer)
updateChart ()
Return Value
Data TypeExplanation
Object

The Chart class is not modified in any way. Rather the settings from the class are synced to the chart previously added to a layer.

After defining chart properties in the Chart class, the final step is typically to add the chart to a layer. Use the addToLayer method to accomplish this. However, you may wish to further modify the chart properties. Instead of starting from scratch with a new chart, you can modify the properties of the original Chart class, then use updateChart to sync any changes into the chart added to the layer. This will allow the changes you make to be presented in the Chart properties pane and chart view.

Use updateChart to sync chart property changes into a layer.

chart.addToLayer(myLayer)

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

Code sample

Chart example

Add a Chart object to an arcpy.mp Layer object in order to add the chart to the layer.

import arcpy

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

c.type = 'scatter'
c.title = 'Relationship between Percent Vacant (Housing) and Population Density'
c.description = 'This chart examines the relationship between housing vacancy and population density.'
c.xAxis.field = 'Per_Vacant'
c.yAxis.field = 'Pop_Density'
c.xAxis.title = 'Vacant Housing %'
c.yAxis.title = 'Population Density (per Sq. Mile)'
c.addToLayer(censusLayer)