This does not seem to be documented in the
clusthr manual page, but because the source code is available, we can try to figure it out.
R prompt (shown as the initial
>), you can see the code. It's opaque, but a quick look indicates (1) there's no plotting or color selection going on and (2) the clustering is performed with a call to a C function. There's no plotting because this code only produces an object that will be plotted later with
The version of
plot to use is determined by the class of the object returned by
clusthr: the docs say this is a class named "MCHu". Therefore we inspect the code of its corresponding plotting function by typing
Here is a key part of the output:
co <- grey(c(1:nrow(df))/nrow(df))
plot(x, col = co, ...)
Evidently the colors are graduated from dark to light in even increments and assigned to polygons in the order they are found in the
MCHu object. At this point we do some reverse-engineering by generating such an object using the example from the
clusthr manual page:
> res <- clusthr(lo)
str(res) to inspect the structure of
res is met with a huge amount of output, which is therefore almost worthless, but it's evident this is a list, so let's try to inspect the structure of just its first element:
This time the output is manageable (although still ridiculously long for such a small amount of information). It begins
Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
..@ data :'data.frame': 22 obs. of 2 variables:
.. ..$ percent: num [1:22] 10 13.3 23.3 26.7 36.7 ...
.. ..$ area : num [1:22] 0.0179 0.0457 0.0664 0.0947 0.2717 ...
..@ polygons :List of 22
OK, the polygons are what we're interested in, so let's inspect their structure, but this time we will be a little cautious. Since they are a list, let's inspect just the first one:
An object of class "Polygons"
An object of class "Polygon"
 698994.7 3161001.7
area slot there is something interesting related to the hypothesis that shading corresponds to polygon size. (There are actually two
area slots in this object: probably somebody extended a class that includes an
area slot but they inadvertently added another; only one of them will be accessible through the
@area construct.) Let's print out those areas, in order:
> sapply(1:length(res[]@polygons), function(i) res[]@polygons[[i]]@area)
 179.0 456.5 663.5 947.0 2717.0 7928.5 9761.5 12790.5
 14839.0 16404.0 18100.0 18325.0 23731.5 37658.5 58793.0 70735.5
 82063.0 105812.5 182443.0 226467.0 252571.5 405963.5
The polygons appear to be sorted by increasing area. This is true for the other three components of
res (as we may find by repeating the preceding command, replacing
res[], etc.) Assuming it is always the case that
clusthr orders the polygons by increasing area, we may tentatively conclude that lightness corresponds to the ranks of the polygon areas, with lighter polygons having larger area.