The symbol diameter is computed as a function of the value z to be plotted:
diameter = dmin + (dmax - dmin) * {(z - zmin)/(zmax - zmin)}^p
where dmin and dmax are defined as 0.1 and 1 units, so the symbol diameters range over an order of magnitude (and symbol areas over two); zmin and zmax are the observed range of the data, or the range over which the user wants the diameters to be computed; and p is a power defined by the user. The value of (z - zmin)/(zmax - zmin) is the value of z normalized, 0 - 1, to the range over which the symbol diameters are to be computed. After being raised to the power p, which will result in a number in the range 0 to 1, this value is multiplied by the permissable range of diameters and added to the minimum diameter. This results in a diameter between 0.1 and 1 units that is proportional to the value of z.
A p value of 1 results in a linear rate of change. Values of p less than unity lead to a rapid intial rate of change with increasing value of z which is often suitable for displaying positively skewed data sets, see the example below. In contrast, values of p greater than unity result in an initial slow rate of change with increasing value of z which is often suitable for displaying negatively skewed data sets. To obtain a logarithmic scaling set p = 0.3679, i.e. 1/e, and a value of p = 0.5 is equivalent to a square root transformation, the default, that is appropriate for a linear-area relationship. These values of p are equivalent to plotting log(x) or log10(x) and sqrt(x), respectively. Experimentation is often necessary to obtain a satisfactory visual effect. See syms.pfunc for a graphic demonstrating the effect of varying the p parameter.
If zmin or zmax are defined this has the effect of setting a minimum or maximum value of z, respectively, beyond which changes in the value of z do not result in changes in symbol diameter. This can be useful in limiting the effect of one, or a few, extreme outlier(s) while still plotting them, they simply plot at the minimum or maximum symbol size and are not involved in the calculation of the range of z over which the symbol diameters vary. Note: If the variable z includes a transform, e.g., log10(z), the values of zmin and/or zmax must be in those transform units.
If zlab and main are undefined a default a plot title is generated by appending the input variable name text string to "Proportional Symbol Plot for ". If no plot title is required set zlab = " ", and if some user defined plot title is required it should be defined in main, e.g. main = "Plot Title Text".
If the default selection for xlim is inappropriate it can be set, e.g., xlim = c(0, 200) or c(2, 200), the latter being appropriate for a logarithmically scaled plot, i.e. log = "x". If the defined limits lie within the observed data range a truncated plot will be displayed. The same procedure applies to setting ylim.
For compositional data the function gx.symm.coords.mat is required, and arguments xx and yy are replaced by a call to that function which returms the symmetric coordinated for those parts of the composition, and the axes should be labelled appropriately. See example below.