Description Usage Arguments Details Value Note Author(s) References See Also Examples
The function provides a uniform interface to finding class intervals for continuous numerical variables, for example for choosing colours or symbols for plotting. Class intervals are non-overlapping, and the classes are left-closed — see findInterval
. Argument values to the style chosen are passed through the dot arguments. classIntervals2shingle
converts a classIntervals
object into a shingle. Labels generated in methods are like those found in cut
unless cutlabels=FALSE.
1 2 3 4 5 6 7 8 9 | classIntervals(var, n, style = "quantile", rtimes = 3, ...,
intervalClosure = c("left", "right"), dataPrecision = NULL)
## S3 method for class 'classIntervals'
plot(x, pal, ...)
## S3 method for class 'classIntervals'
print(x, digits = getOption("digits"), ...,
under="under", over="over", between="-", cutlabels=TRUE, unique=FALSE)
nPartitions(x)
classIntervals2shingle(x)
|
var |
a continuous numerical variable |
n |
number of classes required, if missing, |
style |
chosen style: one of "fixed", "sd", "equal", "pretty", "quantile", "kmeans", "hclust", "bclust", "fisher", or "jenks" |
rtimes |
number of replications of var to catenate and jitter; may be used with styles "kmeans" or "bclust" in case they have difficulties reaching a classification |
intervalClosure |
default “left”, allows specification of whether partition intervals are closed on the left or the right (added by Richard Dunlap). Note that the sense of interval closure is hard-coded as “right”-closed when |
dataPrecision |
default NULL, permits rounding of the interval endpoints (added by Richard Dunlap) |
... |
arguments to be passed to the functions called in each style |
x |
"classIntervals" object for printing, conversion to shingle, or plotting |
under |
character string value for "under" in printed table labels if cutlabels=FALSE |
over |
character string value for "over" in printed table labels if cutlabels=FALSE |
between |
character string value for "between" in printed table labels if cutlabels=FALSE |
digits |
minimal number of significant digits in printed table labels |
cutlabels |
default TRUE, use cut-style labels in printed table labels |
unique |
default FALSE; if TRUE, collapse labels of single-value classes |
pal |
a character vector of at least two colour names for colour coding the class intervals in an ECDF plot; |
The "fixed" style permits a "classIntervals" object to be specified with given breaks, set in the fixedBreaks
argument; the length of fixedBreaks
should be n+1; this style can be used to insert rounded break values.
The "sd" style chooses breaks based on pretty
of the centred and scaled variables, and may have a number of classes different from n; the returned par=
includes the centre and scale values.
The "equal" style divides the range of the variable into n parts.
The "pretty" style chooses a number of breaks not necessarily equal to n using pretty
, but likely to be legible; arguments to pretty
may be passed through ...
.
The "quantile" style provides quantile breaks; arguments to quantile
may be passed through ...
.
The "kmeans" style uses kmeans
to generate the breaks; it may be anchored using set.seed
; the pars
attribute returns the kmeans object generated; if kmeans
fails, a jittered input vector containing rtimes
replications of var
is tried — with few unique values in var
, this can prove necessary; arguments to kmeans
may be passed through ...
.
The "hclust" style uses hclust
to generate the breaks using hierarchical clustering; the pars
attribute returns the hclust object generated, and can be used to find other breaks using getHclustClassIntervals
; arguments to hclust
may be passed through ...
.
The "bclust" style uses bclust
to generate the breaks using bagged clustering; it may be anchored using set.seed
; the pars
attribute returns the bclust object generated, and can be used to find other breaks using getBclustClassIntervals
; if bclust
fails, a jittered input vector containing rtimes
replications of var
is tried — with few unique values in var
, this can prove necessary; arguments to bclust
may be passed through ...
.
The "fisher" style uses the algorithm proposed by W. D. Fisher (1958) and discussed by Slocum et al. (2005) as the Fisher-Jenks algorithm; added here thanks to Hisaji Ono.
The "jenks" style has been ported from Jenks' Basic code, and has been checked for consistency with ArcView, ArcGIS, and MapInfo (with some remaining differences); added here thanks to Hisaji Ono. Note that the sense of interval closure is reversed from the other styles, and in this implementation has to be right-closed - use cutlabels=TRUE in findColours
on the object returned to show the closure clearly, and use findCols
to extract the classes for each value.
an object of class "classIntervals":
var |
the input variable |
brks |
a vector of breaks |
and attributes:
style |
the style used |
parameters |
parameter values used in finding breaks |
nobs |
number of different finite values in the input variable |
call |
this function's call |
intervalClosure |
string, whether closure is “left” or “right” |
dataPrecision |
the data precision used for printing interval values in the legend returned by |
From version 0.1-11, the default representation has been changed to use cutlabels=TRUE
, and representation within intervals has been corrected, thanks to Richard Dunlap. From version 0.1-15, the print method drops the calculation of the possible number of combinations of observations into classes, which generated warnings for n > 170.
Roger Bivand <Roger.Bivand@nhh.no>
Armstrong, M. P., Xiao, N., Bennett, D. A., 2003. "Using genetic algorithms to create multicriteria class intervals for choropleth maps". Annals, Association of American Geographers, 93 (3), 595–623;
Jenks, G. F., Caspall, F. C., 1971. "Error on choroplethic maps: definition, measurement, reduction". Annals, Association of American Geographers, 61 (2), 217–244;
Dent, B. D., 1999, Cartography: thematic map design. McGraw-Hill, Boston, 417 pp.;
Slocum TA, McMaster RB, Kessler FC, Howard HH 2005 Thematic Cartography and Geographic Visualization, Prentice Hall, Upper Saddle River NJ.;
Fisher, W. D. 1958 "On grouping for maximum homogeneity", Journal of the American Statistical Association, 53, pp. 789–798 (http://lib.stat.cmu.edu/cmlib/src/cluster/fish.f)
findColours
, findCols
, pretty
, quantile
, kmeans
, hclust
, bclust
, findInterval
, colorRamp
, nclass
, shingle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | data(jenks71)
pal1 <- c("wheat1", "red3")
opar <- par(mfrow=c(2,3))
plot(classIntervals(jenks71$jenks71, n=5, style="fixed",
fixedBreaks=c(15.57, 25, 50, 75, 100, 155.30)), pal=pal1, main="Fixed")
plot(classIntervals(jenks71$jenks71, n=5, style="sd"), pal=pal1, main="Pretty standard deviations")
plot(classIntervals(jenks71$jenks71, n=5, style="equal"), pal=pal1, main="Equal intervals")
plot(classIntervals(jenks71$jenks71, n=5, style="quantile"), pal=pal1, main="Quantile")
set.seed(1)
plot(classIntervals(jenks71$jenks71, n=5, style="kmeans"), pal=pal1, main="K-means")
plot(classIntervals(jenks71$jenks71, n=5, style="hclust", method="complete"),
pal=pal1, main="Complete cluster")
plot(classIntervals(jenks71$jenks71, n=5, style="hclust", method="single"),
pal=pal1, main="Single cluster")
set.seed(1)
plot(classIntervals(jenks71$jenks71, n=5, style="bclust", verbose=FALSE),
pal=pal1, main="Bagged cluster")
plot(classIntervals(jenks71$jenks71, n=5, style="fisher"), pal=pal1, main="Fisher's method")
plot(classIntervals(jenks71$jenks71, n=5, style="jenks"), pal=pal1, main="Jenks' method")
par(opar)
classIntervals(jenks71$jenks71, n=5, style="fixed", fixedBreaks=c(15.57, 25, 50, 75, 100, 155.30))
classIntervals(jenks71$jenks71, n=5, style="sd")
classIntervals(jenks71$jenks71, n=5, style="equal")
classIntervals(jenks71$jenks71, n=5, style="quantile")
set.seed(1)
classIntervals(jenks71$jenks71, n=5, style="kmeans")
set.seed(1)
classIntervals(jenks71$jenks71, n=5, style="kmeans", intervalClosure="right")
set.seed(1)
classIntervals(jenks71$jenks71, n=5, style="kmeans", dataPrecision=0)
set.seed(1)
print(classIntervals(jenks71$jenks71, n=5, style="kmeans"), cutlabels=FALSE)
classIntervals(jenks71$jenks71, n=5, style="hclust", method="complete")
classIntervals(jenks71$jenks71, n=5, style="hclust", method="single")
set.seed(1)
classIntervals(jenks71$jenks71, n=5, style="bclust", verbose=FALSE)
classIntervals(jenks71$jenks71, n=5, style="bclust", hclust.method="complete", verbose=FALSE)
classIntervals(jenks71$jenks71, n=5, style="fisher")
classIntervals(jenks71$jenks71, n=5, style="jenks")
x <- c(0, 0, 0, 1, 2, 50)
classIntervals(x, n=3, style="fisher")
classIntervals(x, n=3, style="jenks")
# Argument 'unique' will collapse the label of classes containing a
# single value. This is particularly useful for 'censored' variables
# that contain for example many zeros.
data_censored<-c(rep(0,10), rnorm(100, mean=20,sd=1),rep(26,10))
plot(density(data_censored))
cl2<-classIntervals(data_censored, n=5, style="jenks", dataPrecision=2)
print(cl2, unique=FALSE)
print(cl2, unique=TRUE)
|
style: fixed
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,25) [25,50) [50,75) [75,100) [100,155.3]
6 34 42 14 6
style: sd
one of 75,287,520 possible partitions of this variable into 6 classes
[5.514407,30.89691) [30.89691,56.27941) [56.27941,81.66191) [81.66191,107.0444)
10 47 31 9
[107.0444,132.4269) [132.4269,157.8094]
4 1
style: equal
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,43.516) [43.516,71.462) [71.462,99.408) [99.408,127.354)
35 44 17 4
[127.354,155.3]
2
style: quantile
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,33.822) [33.822,50.114) [50.114,57.454) [57.454,73.368) [73.368,155.3]
21 20 20 20 21
style: kmeans
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,36.905) [36.905,53.33) [53.33,72.185) [72.185,105.95) [105.95,155.3]
25 26 29 17 5
style: kmeans
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,36.905] (36.905,53.33] (53.33,72.185] (72.185,105.95] (105.95,155.3]
25 26 29 17 5
style: kmeans
one of 3,921,225 possible partitions of this variable into 5 classes
[16,37) [37,54) [54,73) [73,106) [106,156]
25 26 29 17 5
style: kmeans
one of 3,921,225 possible partitions of this variable into 5 classes
under 36.905 36.905 - 53.33 53.33 - 72.185 72.185 - 105.95 over 105.95
25 26 29 17 5
style: hclust
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,54.81) [54.81,74.405) [74.405,105.95) [105.95,143.4) [143.4,155.3]
55 27 15 4 1
style: hclust
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,20.995) [20.995,105.95) [105.95,125.7) [125.7,143.4) [143.4,155.3]
4 93 3 1 1
style: bclust
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,43.3) [43.3,82.175) [82.175,105.95) [105.95,143.4) [143.4,155.3]
35 53 9 4 1
style: bclust
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,29.84) [29.84,54.81) [54.81,90.16) [90.16,125.7) [125.7,155.3]
10 45 38 7 2
style: fisher
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,43.3) [43.3,61.36) [61.36,78.475) [78.475,105.95) [105.95,155.3]
35 33 18 11 5
style: jenks
one of 3,921,225 possible partitions of this variable into 5 classes
[15.57,41.2] (41.2,60.66] (60.66,77.29] (77.29,100.1] (100.1,155.3]
35 33 18 11 5
style: fisher
one of 3 possible partitions of this variable into 3 classes
[0,0.5) [0.5,26) [26,50]
3 2 1
style: jenks
one of 3 possible partitions of this variable into 3 classes
[0,0] (0,2] (2,50]
3 2 1
style: jenks
one of 4,082,925 possible partitions of this variable into 5 classes
[0,0] (0,18.91] (18.91,20.33] (20.33,23.15] (23.15,26]
10 21 43 36 10
style: jenks
one of 4,082,925 possible partitions of this variable into 5 classes
Class found with one single (possibly repeated) value: changed label
0 (0,18.91] (18.91,20.33] (20.33,23.15] 26
10 21 43 36 10
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.