Vary symbology by size

Varying the size (or width) of symbols is a good way to indicate variations in magnitude of an attribute. For example, point symbols representing cities can be sized relative to their populations, or the width of line symbols representing pipelines can classify flow volume.

An example of single symbology varied by size
Fire hydrant and water main symbols are varied by size and width, respectively, to show hydrant flow rate and water main diameter.

There are four main ways to vary symbol size. The simplest way to vary symbol size is to set the layer symbology to one of the size-based layer symbology options. Graduated symbols symbology classifies qualitative differences with a discrete number of symbol sizes. Proportional symbology represents quantitative values as a series of unclassed, proportionally sized symbols. Secondly, you can refine one of the other layer symbology options by setting the size variable to a field or an expression. Thirdly, you can control the size (or width) of symbol layer properties by connecting them to an attribute field. Fourthly, you can vary the size of a symbol as the scale of the map changes. While theoretically you can use more than one of these approaches together on a single layer, be aware that the result may be too complex to be understandable. Use these techniques judiciously.

Learn more about layer symbology

Learn more about connecting symbol properties to attributes

Learn more about scale-based symbol sizing

Set the size variable to a field or an expression

When a layer is symbolized with single symbol, unique values, graduated colors, bivariate colors, or unclassed colors, you can also vary the size of the symbols. You can set the size variable to an attribute field, write an expression, or set the size to random values within a range. The attribute can be the same or different than the one used by the layer symbology. Size is displayed in the current symbol display units.

For example, a layer of points representing farms drawn with unique values has a variety of symbols indicating crop type. Additionally, the annual crop yield for each farm could be represented by varying the size of each symbol.


When working with size variables, symbol size means the size of a point in 2D, and the height and width of a point in 3D. For lines and polygon symbols, size refers to the width of the stroke symbol layers of the symbol. When working with polygons, the size variable is called Outline width.

  1. Select the feature layer in the Contents pane.
  2. On the Feature Layer tab, in the Drawing group, click Symbology Symbology.
  3. In the Symbology pane, on the Vary symbology by attribute tab Vary symbology by attribute, expand the Size heading.


    You can also expand the Outline width or Marker size headings to find the needed settings.

  4. Do one of the following:
    • Choose a numeric field from the Field menu to vary the symbol size.
    • Choose <random> from the Field menu, and set the size range by specifying Minimum and Maximum sizes. Sizing symbols randomly is a good way to provide visual variety for nonthematic layers. For example, you can set the height of three-dimensional trees in a scene to random to make a natural-looking forest.
    • Write an expression to determine size. Choose Custom from the Field menu, or click the Set an expression button Set an expression to open the Expression Builder dialog box. Write an expression and click Verify Verify to validate it. Note that although an expression is valid, it may not return a valid numeric value for the size variable. You can filter Filter the Expression Builder dialog box to show only numeric fields to help prevent this.

      Learn more about writing expressions in the Arcade language

    In the case of a 3D layer in a scene, you can uncheck Maintain aspect ratio to change Height and Width independently. Height modifies the z-axis and width modifies the x- and y-axes simultaneously.

  5. Optionally, check the Enable size range check box to limit the size of the symbols to a specified range. A histogram shows the data distribution, and you can specify what value corresponds to the minimum and maximum of the size range. This option is not available when the size variable is set to <random>. When Enable size range is not checked, the symbol size is determined by the values returned from the field, the expression, or the random setting, expressed in the current map units.
  6. Optionally, choose a Normalization field. Normalization is only available when the size variable is set to a field. It is not available when the size variable is set to an expression or to <random>.
  7. Check the Show legend check box to add a representation of the size variation to the layer's legend in both the Contents pane and any legends placed on layouts.
  8. To remove the size variable or the normalization field, choose <none> from the Field or Normalization menus, respectively.

Expressions are not saved by the layer if you change the size variable to read from a field instead of an expression. You can save the expression from the Expression Builder dialog box by clicking Export Export before making changes.

Classify unique value categories by size

When a feature layer is symbolized with unique values symbology and a variable is applied to vary the symbology by size, you can classify the size variable to symbolize a category and a quantity with one layer. For example, you may display a road network using a categorical field to represent the type of road, and vary the symbology with a numeric field to represent the traffic volume.

The symbology's legend shows the name of the field or expression and the classified unique value categories' default symbols. This is followed by the name of the field or expression used to vary the symbology, and an example patch (based on the first listed unique value) of each class symbol's size. Use the Show expanded legend option to show the resulting symbol for every unique value class in your symbology.

Classifying your data this way allows you to display more information. However, it also adds complexity to the map and its legend, especially if other layers in the map are symbolized in the same manner.

To classify the size variable, follow the steps below.

  1. Ensure your feature layer is set to use unique values symbology.
  2. Follow steps 1 through 3 in the above section to set a size variable to a field or expression.

    Marker symbol resizing is drawn in an independent process. Because symbol layer drawing overrides the default drawing behavior, varying symbology by marker size is not available if symbol layer drawing is enabled.

  3. Turn on the Classify data toggle button.
  4. Optionally, choose a classification method and set the number of desired classes.
  5. Optionally, set the Minimum size and Maximum size values, or click the Classes and Histogram tabs to adjust the size values of each class and view the distribution of the data in the field.

    You can make adjustments to each class's symbol properties as needed. For point and polyline data, some symbol format options in the More menu are not available.

  6. Optionally, for point and polyline data, check Show expanded legend to show separate size legends for each unique value.

Related topics