visualizing multivariate data using lattice and direct labels

59
Visualizing multivariate data using lattice and direct labels http://directlabels.r-forge.r-project.org Toby Dylan Hocking toby.hocking AT inria.fr 15 October 2009

Upload: lytu

Post on 13-Feb-2017

231 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Visualizing multivariate data using lattice and direct labels

Visualizing multivariate data using lattice and direct labelshttp://directlabels.r-forge.r-project.org

Toby Dylan Hockingtoby.hocking AT inria.fr

15 October 2009

Page 2: Visualizing multivariate data using lattice and direct labels

Outline

The lattice system

Adding direct labels using the latticedl package

Page 3: Visualizing multivariate data using lattice and direct labels

Brief history of lattice

I Bill Cleveland, Visualizing Data (1993).

I Bill Cleveland, Rick Becker, Bell Labs, 1990s: trellis graphics system for S:http:

//cm.bell-labs.com/cm/ms/departments/sia/project/trellis/

I Deepayan Sarkar, 2000s: the lattice package for R.

I Deepayan Sarkar (2008) Lattice: Multivariate Data Visualization with R,Springer.

Page 4: Visualizing multivariate data using lattice and direct labels

Installing the required packages

I I used R 2.9.2 for the following examples.

I lattice is preinstalled with R.

I library(lattice)

I install.packages(c("latticeExtra","latticedl"))

I library(latticeExtra)

I library(latticedl)

Page 5: Visualizing multivariate data using lattice and direct labels

Lattice allows easy visualization of many variables

> options(width = 55)

> library(lattice)

> dotplot(variety ~ yield | site, data = barley,

+ groups = year, auto.key = list(space = "right"),

+ layout = c(1, 6), xlab = "Barley Yield (bushels/acre)")

Barley Yield (bushels/acre)

SvansotaNo. 462ManchuriaNo. 475VelvetPeatlandGlabronNo. 457Wisconsin No. 38Trebi

20 30 40 50 60

Grand RapidsSvansotaNo. 462ManchuriaNo. 475VelvetPeatlandGlabronNo. 457Wisconsin No. 38Trebi

DuluthSvansotaNo. 462ManchuriaNo. 475VelvetPeatlandGlabronNo. 457Wisconsin No. 38Trebi

University FarmSvansotaNo. 462ManchuriaNo. 475VelvetPeatlandGlabronNo. 457Wisconsin No. 38Trebi

MorrisSvansotaNo. 462ManchuriaNo. 475VelvetPeatlandGlabronNo. 457Wisconsin No. 38Trebi

CrookstonSvansotaNo. 462ManchuriaNo. 475VelvetPeatlandGlabronNo. 457Wisconsin No. 38Trebi

Waseca

19321931

Page 6: Visualizing multivariate data using lattice and direct labels

Aspect ratio in scatterplots is important

> xyplot(sunspot.year ~ 1700:1988, xlab = "Year",

+ type = "l", scales = list(x = list(alternating = 2)),

+ main = "Yearly Sunspots")

Yearly Sunspots

Year

suns

pot.y

ear

1700 1750 1800 1850 1900 1950 2000

0

50

100

150

Page 7: Visualizing multivariate data using lattice and direct labels

Lattice also automatically calculates aspect ratio for optimal decoding

> xyplot(sunspot.year ~ 1700:1988, xlab = "Year",

+ type = "l", scales = list(x = list(alternating = 2)),

+ main = "Yearly Sunspots", aspect = "xy")

Yearly Sunspots

Year

suns

pot.y

ear 1700 1750 1800 1850 1900 1950 2000

0100

Page 8: Visualizing multivariate data using lattice and direct labels

Load a data set

> data(Chem97, package = "mlmRev")

> head(Chem97)

lea school student score gender age gcsescore

1 1 1 1 4 F 3 6.625

2 1 1 2 10 F -3 7.625

3 1 1 3 10 F -4 7.250

4 1 1 4 10 F -2 7.500

5 1 1 5 8 F -1 6.444

6 1 1 6 10 F 4 7.750

gcsecnt

1 0.3393157

2 1.3393157

3 0.9643157

4 1.2143157

5 0.1583157

6 1.4643157

Page 9: Visualizing multivariate data using lattice and direct labels

Simple histogram

> histogram(~gcsescore, Chem97)

gcsescore

Per

cent

of T

otal

0

5

10

15

20

25

0 2 4 6 8

Page 10: Visualizing multivariate data using lattice and direct labels

Histograms conditional on a categorical variable

> histogram(~gcsescore | factor(score),

+ Chem97)

gcsescore

Per

cent

of T

otal

0

10

20

30

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0

10

20

30

10

Page 11: Visualizing multivariate data using lattice and direct labels

Box and whisker plots

> bwplot(gcsescore ~ gender | factor(score),

+ Chem97, layout = c(6, 1))

gcse

scor

e

0

2

4

6

8

M F

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●●

●●

●●

●●

●●

●●●●●●●●

●●

●●●

●●

0

M F

●●

●●●

●●●●

●●●●●●

●●●●●

●●

●●

●●

●●●●●

●●●●●●●

●●

●●

2

M F

●●

●●●

●●●●●●

●●●

●●●

●●●●●

●●

●●

●●

●●●●●

●●

●●

●●●●

4

M F

●●

●●

●●●

●●

●●●

●●

●●

●●●●●●

●●●●●●●

●●

●●

●●

●●●

●●

●●

●●

●●●●

●●

●●●●●

●●●

●●

●●

●●

●●

6

M F

●●

●●●●

●●

●●●

●●●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●●

●●●●

●●●

●●

●●●●●

●●

●●

●●●●

●●●

●●

●●

●●

●●●

●●●

8

M F

●●

●●

●●

●●●●●●●

●●

●●

●●

●●●●●

●●●●

●●●●

●●

●●●●●●●

●●●●●●

●●

●●

●●●

●●●●●●

●●●●●●

●●

●●

●●

●●

●●

●●●●●

●●●

10

Page 12: Visualizing multivariate data using lattice and direct labels

Conditioned plots of kernel density estimates

> densityplot(~gcsescore | factor(score),

+ Chem97)

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0 2 4 6 8

●● ●●●●● ● ●●● ●●● ●●●●●● ● ●● ●●●●● ●●● ●●● ● ●● ●●● ●● ●●●● ●● ●●●● ●● ●●● ● ● ●● ● ●●●●● ●● ●●● ● ● ● ●● ●●● ●●● ●● ●● ●● ●●●● ●● ●●● ●● ●●● ●●● ●●●●●● ●● ●● ● ●●● ●● ●●●● ●● ●●●● ●● ●● ● ●●●●● ●●●● ●●● ●●● ●● ●●● ●● ●● ●● ●● ●●● ●●●● ●●●●●● ●● ●● ● ●● ●● ● ●● ●● ●●● ●●●● ●●● ● ●● ●●● ●●●● ●●● ●● ●● ● ●● ●●●●● ●● ●● ● ● ●● ●● ●●● ●●●● ●●● ●●● ● ●●● ●● ●●●● ● ●● ●●●●●● ●●● ●●● ●●● ● ●● ●● ●●● ●●● ●●● ●● ●● ●●●● ●● ●●●● ● ●● ●●●● ●●●● ●● ●● ● ●● ●● ●●● ●●●● ●● ●●● ●●● ●● ●● ●●● ●●● ●● ●● ●● ● ●●●● ●● ●●● ●● ● ●●●●●●●●● ● ●●● ● ●● ●● ●●●●●● ● ●● ●●●● ●●●● ●●● ●●● ● ●●● ●●● ● ●●● ●● ●● ●●● ●●● ●●● ●● ●●● ●●●● ●● ● ●●●●● ● ●● ● ●●●● ●● ●● ●● ●● ●● ● ●●●● ●● ●● ●● ●●● ● ●●● ● ●●● ●● ● ●●● ●● ●●● ●● ● ●● ●● ●● ●● ●●●●● ●●● ●●● ●●● ●● ●●●●●●●●● ●● ●●●●● ●●●● ●●●● ●●● ●● ●● ●●● ●●●●● ● ● ●●●● ●● ●●●● ● ●● ● ●● ● ●●●●●●● ●●● ●● ● ●●●● ●●● ●●●● ●●● ● ● ● ●● ●●● ●●● ●● ●●● ● ● ●● ● ●●●● ● ●● ●●●● ●● ●● ● ●●● ●●●● ●●● ●● ●●● ●● ●●● ●● ● ●●●● ●●●●● ●● ●●● ●● ●●● ●●● ●●● ●●●● ●● ● ●● ●●●● ●● ●●● ●●●●● ●● ●● ●●● ●●●● ●● ●● ●● ● ●● ●●● ●●● ●● ● ●● ●●● ●●●● ●●●● ●● ● ●●●● ●●● ●● ●●●●●● ●●● ●●●● ●● ●● ●● ●● ●● ●●●● ● ●●●● ●● ●●● ●●●● ●● ● ●●●●● ● ●●●● ●● ● ●●● ●●●● ●● ●● ●●●● ●●●●●● ●● ●●● ●●● ● ●●● ●●● ●● ●●● ●●●●●●●●● ● ●●●●● ● ●● ●● ● ●● ● ●●● ●●●● ●●●● ● ●● ●● ● ●● ●● ● ●● ●●● ●● ●● ●● ● ● ● ●●● ●●● ● ●● ●● ●●● ●● ● ● ●● ● ●● ●● ●● ●●● ●●● ●●●● ● ●●●●● ●● ●● ●●● ● ●●●●● ●●●● ●●● ●● ●●●● ● ●● ● ●● ●●●● ●●●● ●●● ●● ●●●● ●●●● ●● ● ●● ●● ● ●● ●● ● ●●● ●● ●● ●● ●●● ● ● ●●●● ●● ●● ● ● ●●● ● ●●●● ●● ●● ● ● ●● ●● ●● ●●● ●●● ● ●●● ●●● ●●● ●● ●● ●● ● ●●● ●●●● ●● ●● ●● ●● ●●● ●●●● ●● ●●●● ● ●● ●●●● ●● ●●●● ●●●● ●● ●●● ●●● ●●●● ● ●● ●● ●●● ●● ●● ●● ●● ● ●● ●●● ●● ●●● ●● ●●●● ● ●● ● ●●● ●●●● ● ●●● ●●● ●● ●●●●● ●● ●● ●● ●●●●●● ● ●●● ●●●●●●● ●●● ●●● ●●●●●● ●●● ●● ●●●● ●●● ● ●●● ● ●● ● ●●●●● ●●● ●● ●● ●● ● ●●●● ● ●●● ●●● ● ● ●●● ● ●●●●● ● ●●●● ●● ●● ●● ● ● ● ●● ●●● ●● ●● ●●● ●●●● ● ●● ●● ●●● ●●● ● ●● ●●● ●● ●●●●●●● ● ●● ●●● ●● ● ●●● ● ●● ● ●●●● ●●●● ●●●●●● ●●● ● ●●●●● ●● ● ●● ●●● ●●● ●●● ● ●● ●● ●●● ●● ● ●●●●● ●● ● ●●● ●●●● ● ●●●●●● ●●●●● ●●● ● ● ● ●●● ●●●● ●●●●● ●● ●● ● ●●● ●● ● ●● ●●● ●●●●●● ●● ●● ● ●●● ●●●●● ● ●● ●● ●● ●●●●●●● ●●●● ●●●●● ● ●● ●●● ● ●●●● ●● ●● ●● ●●● ●● ●●●● ● ●●●●●●● ●● ● ●●●● ●●● ● ●●● ●● ●●● ●●● ●● ●● ●●● ● ●● ●●●●●● ●●●●● ●● ● ●● ●● ●● ●●● ● ●● ●● ●● ● ●●● ●● ●● ● ●●●● ●●● ●● ●● ●●● ●●●●● ● ● ●●● ●● ●●●●● ● ●●●● ●● ● ●● ●●● ●● ●●●● ● ●●●●●● ●●●● ●●● ●●● ● ●● ● ●●●● ● ●● ●●● ●● ●●●● ● ●●●● ● ●● ●●●●● ● ●● ●● ●● ●● ● ●●● ●●● ●●●● ●● ●● ●● ●●●●● ●●●● ●●●●●● ● ●●●● ●● ●●● ●●● ● ●● ●● ● ●●●● ●● ●● ●●● ●● ● ●●● ● ●● ●● ●●● ● ●●● ●●●● ●● ●●● ●● ●●●● ●●●●● ●●● ●● ●●● ●● ●● ●●● ● ●● ● ●●● ●●●●● ●● ●●●● ●●● ●●●●● ●●●●● ●●●● ●●● ●●●●● ● ●●●● ●● ●●●●● ●● ●●●●●● ● ●●●●●●● ●●● ●●●●● ● ●● ●●●●●● ●●● ●●● ●●●●● ●●●●●● ●●● ●● ●● ●●●● ● ●●● ●●●● ●●● ●● ●●●● ● ●● ●● ●● ● ●● ●● ●● ●●● ●● ● ●●●●●●● ●●● ●● ●●●●● ●●● ●●●● ●●● ●● ●● ●●● ●● ●● ●●●●●●●● ●●●●●●● ●● ●●● ●●●●●● ●● ●●● ● ●●●●● ● ●● ●●●● ● ●● ●●●●●● ●●●●●●● ●●● ●●●●●●● ●●●●●●● ●● ● ●● ● ●● ●● ●● ●● ●● ●●● ●● ● ● ●● ●● ● ●● ●● ●● ●●● ● ●● ●●● ●● ●● ●● ● ● ●●● ● ●●●●●●● ●●●● ●● ● ● ●●● ● ●●●● ● ●●● ●● ●●● ● ●● ●● ●●●● ●●●● ●●● ●● ●●●●●●● ● ● ●●● ●● ●● ●● ●● ●● ● ●●● ●● ● ●● ●● ●● ● ●●● ● ● ●● ●●● ●●● ●● ●●● ●● ●●● ●●●●● ●●● ● ●●● ●● ●●● ●● ●● ●●● ●●● ●● ●●●● ●● ●●●● ●●● ●●● ●● ●● ●● ●●● ●●● ●●● ●●●● ●● ●● ●● ●●● ●●●● ●● ● ●● ●●● ●● ●●●●● ●● ●● ●●● ●●●● ●● ●●● ●●●● ●●●●● ●●● ●●●● ●●●● ●●● ●●●● ●● ●●● ●●● ●●● ● ●●● ●●● ●● ● ●●●● ●●● ●● ●● ●●● ●● ●● ●●●● ●●● ●● ●●● ●●● ● ●● ●● ● ●● ●● ●● ● ● ●● ●●●● ●●●● ●●●● ●●● ●●●● ●●●● ●● ●●●● ● ●● ●● ● ●●● ●●●●● ●●●●● ● ●●● ● ●● ●● ●● ●●● ●●● ●●● ●● ●●● ●●●●● ● ●●● ●●● ●● ●●● ●● ●● ●● ●●●●●● ●● ●● ●● ●● ● ●●●● ●● ● ● ●● ●●● ●●● ●●●● ●●● ●● ● ●●●● ●● ● ●● ●●●● ●●●● ● ●● ●●●●●● ●● ●● ●●● ● ●●● ●● ●● ●● ●● ●●●● ●●● ●●●●●●●●● ● ●● ●●●● ●●● ●● ●● ● ●●● ●● ●● ●●●●●●● ●●● ●● ●● ●●● ● ●●●●●● ● ●●● ● ●● ●●● ● ●● ●●● ●● ●●● ●● ●●●● ●● ● ●● ●● ●●● ● ●●● ●● ●● ●● ●● ●●● ●● ●● ●●● ●● ●●●● ●● ●●●● ●● ●● ●●●● ●● ● ●● ●●● ●● ●●● ●●●● ●●● ●● ●● ● ●●●●●● ●● ●●●● ●●●●●● ●● ● ●● ●● ● ●● ●● ●● ●● ● ●●● ● ●●● ● ● ●●● ●● ●●● ●● ●●●●●● ●●● ●● ●●●●●●● ●● ● ●● ●● ●● ● ●● ● ●●● ●● ●● ●●● ●● ●● ●●● ●● ●●●● ● ●● ● ●●● ●● ●● ●● ●● ●● ●● ●●● ●● ●●● ●● ● ●●●● ●● ●●●● ●●●●● ●● ●● ● ●● ●●● ●●● ● ● ●●● ● ●● ●●●●● ●●●●● ●●● ●●● ● ●● ●●● ●● ●●● ● ●●● ●●●●●● ● ●●●●●● ●●●● ●●●● ●●● ●●● ●● ●● ●●● ●● ● ●●● ●●● ●● ●●● ●● ●● ●●● ●●● ●●● ●● ●● ●● ● ●●● ●●●● ●● ●● ● ●●● ●● ●● ●●●●● ●● ● ●● ●●● ● ●● ●●●●● ● ●●●●● ●●● ●● ● ●●●● ● ●● ● ●●●● ●● ●● ●● ●● ●● ●● ● ● ●● ●●● ●●● ● ● ●● ●● ●●●● ●● ●● ●●●● ●● ●● ●● ●●● ●●● ● ●● ●●● ●●●● ● ●●● ●● ●● ●●● ● ●●●● ●●● ●● ●●● ●● ●● ●● ●●●● ●●●● ●●●● ●●● ●●● ●● ●●●●● ●●●● ●● ●●● ● ●●●●● ● ●● ●●●● ● ●●● ●●● ●●●●●● ● ●●● ●● ● ●● ●●●●●●●● ●●● ●●● ● ●● ●●● ●●● ● ● ● ●●● ●●●● ●●●● ●●● ●●●● ●●● ●●● ●●●● ● ●●●●● ●●●● ●● ●● ●● ●●●● ●● ●● ●● ●●●● ●●●● ● ●●●● ●● ●●●●● ● ●●●●●● ●●●●●●●●● ●●●● ●● ● ●●● ●● ●● ●●●● ● ●● ● ●● ●●● ●●● ● ●●●● ●● ●●● ●●● ●●●●●●● ●● ●● ●● ● ●●● ●●● ●●●●● ●● ●●●● ●● ●●● ●● ● ● ●● ●●● ●●●●● ●●● ●●● ●● ●● ● ●●●●●● ●●● ● ●●●● ● ● ●● ●● ●●● ●●● ●● ●●●● ●● ●●●●●● ●● ●●● ●●●● ●●● ●● ●●●●● ●●● ● ●●●● ●●● ●●●●●●●● ●● ● ●●● ●● ● ●●● ● ●●●● ●● ●●●●●● ●●●●●●●● ●●●●

0

●●●● ●● ●● ●● ●●● ●●● ● ● ● ●●● ●●● ●● ●●●●●●●●● ●● ●●●●● ● ●● ● ●● ●●●●●● ● ●●●● ●● ●●●●● ● ● ●●●●●●●● ●●●● ●● ●●● ● ●● ●●●●● ● ●● ●●● ●●● ●● ●● ●●●● ● ●● ●●● ●●● ●●● ● ● ●●● ● ●● ●● ●●●●● ● ●●● ●● ●● ●●● ● ●●● ●● ●●●● ● ●●● ● ●● ●● ●● ●●●●● ● ●●● ●●● ●●●● ●●● ●● ●● ●●●●● ●● ●● ●●●● ●●● ●●●● ●● ●●● ●● ●●●● ● ●● ●●●● ● ● ●●●● ● ●●● ●●●●●●● ●●●●● ●● ●● ●● ●●●●● ●● ●●●●●●● ●●●● ●● ●● ● ●● ●●● ●●●●● ●● ● ● ●●●●●●● ●●● ●● ●●●● ●● ●● ●● ● ●● ● ●●● ●● ●● ● ● ●●●●●● ● ●●● ● ● ●●●● ●● ●● ●●● ● ●● ●●●● ● ●● ●●●●● ●●● ●●● ●●●●● ● ●●● ●●●● ●● ● ● ●● ●●● ●●● ●● ●●●●● ●● ●● ●● ●● ● ●●● ●● ●●●●● ●● ●● ● ●●● ●●● ●● ● ●● ●● ●●●●●● ●●●● ●● ●●●●●●● ●●●●●● ●● ●●●● ●●●● ●● ●● ●●●●●● ● ●● ●●●● ●● ●●●● ●● ● ●●●●● ● ●● ● ●●● ● ●●● ●●●●●● ●●● ●● ●●●● ● ●●●● ●● ●● ● ●●● ●● ●● ● ●●● ●● ●●●● ●●● ●● ●●● ● ●●● ●●●● ●● ●●●●● ●● ●●●● ● ● ●●● ● ●●● ● ●●●●●●●● ●● ●●● ●● ●●● ●●●●● ●●●● ●● ●● ●● ●●● ●●● ●●●● ●●●● ●●●●● ● ●●● ●●● ●● ● ●●●●● ● ●● ● ●● ●●●●● ●●● ●●● ●● ●●● ●● ●●●●● ● ●● ●●●●● ● ●● ●●● ●●●● ● ●● ●●●●●●●● ●● ●● ●● ● ●●● ●● ●●● ● ●●●● ●● ●●● ● ●●●●● ●● ● ●●●● ●●●●● ●●● ● ●●●●●●●●● ● ●●●●● ●● ●●● ●● ●●●● ●● ●●●●● ●● ●● ●●●● ●● ●● ● ●●● ●● ● ● ● ●●●●● ●●●●●● ●●● ●●●● ●●● ●● ●●●●● ●● ●● ●● ●● ●●● ●●●●● ●● ●●●●● ●● ●●●●● ●●●● ●●● ●●● ●●● ● ●●●● ●●●● ●● ● ●●●●● ● ●●● ●● ● ●●● ●●● ●● ●●● ●●●● ●●● ●● ●●●● ●●● ●● ●●● ●● ●●● ●●● ●● ●●●● ●●● ● ●● ●● ●● ● ● ●●● ●● ●●● ●●● ● ● ●●●●● ● ●●● ●●●● ●●●●● ●●●● ●● ●●●●● ●● ●●● ●●● ●● ●● ●●●●● ●●● ●●● ●●●● ●● ●●● ●●●●● ●● ●●●● ●● ●●●●● ● ●● ●● ●● ●● ●●● ●● ●●●● ●●● ●●●● ●● ●●●●●● ●●● ●●●● ●●● ●●● ● ●●●● ●● ●●● ●●● ●●●● ● ●●●●●● ●●● ●●●●● ●●● ●●●●● ●●●●● ●●●● ●● ●●● ●●● ●●● ● ●● ●● ●● ●●● ● ● ●● ● ●● ●●● ●● ●●●● ●●● ●●● ●●●●● ●● ●●●●●●● ●● ●● ● ● ●●●● ●●● ●● ●●●●● ●●●●●● ●●●● ●● ●●● ●● ●●● ●● ●●● ●● ●●●●●● ● ●●●● ● ●● ●● ●● ●●● ●●● ●●●● ● ●● ●● ●●●●● ●●● ●● ●● ●●● ● ●●● ● ● ●● ●● ● ●●● ● ●●●●●● ●●● ●● ● ● ●● ●● ●●●● ●● ●●● ●●● ●● ●●● ●●●● ● ●●●●●● ● ●●●● ●●●● ●●●● ●● ● ●●● ●●● ●●●● ●●● ●●● ●● ●●● ●● ●●● ●●● ●●●● ●●●● ●●● ●●● ●●● ● ●●● ●● ●●● ● ●●●●●● ●●● ●●● ●●●●●●●● ●●● ●●● ●● ●●● ●● ●● ●●●●●●●● ●●● ●● ● ●●● ●● ●● ● ●● ● ●●● ● ●● ●●●●● ● ●●● ●● ●● ●● ● ● ●●●● ●● ● ●● ● ●● ●●●●●● ●●●● ●●● ●●●●●●● ●●●● ●● ●●● ●●● ●● ●●●● ● ●●● ● ● ●● ●●●● ●● ●●●● ●●● ● ●●●●●●●●● ● ●● ●● ●●● ●●●●● ●●●●● ●● ●●● ●●● ●● ●● ●●●●● ●●● ●●● ● ● ●● ●●●● ●●●● ● ●●● ● ●●●● ●●●●●●● ●●● ●●●●●●● ●● ● ●● ●●●● ●●●●●●● ●●●● ●●●●● ●●● ●●● ● ● ●●●●●● ● ●●●● ● ●●●● ● ●●●●●●●● ●● ●●● ●● ●● ●●●●● ●● ●● ●●●● ● ●●● ●●● ●●● ●●●● ●●●● ● ●●●●●●●● ●● ●●● ● ●●● ●●●● ● ●● ●●● ● ●●●● ●● ●● ●●●● ●●●● ●● ●●● ●● ●●● ●●●● ●●●● ● ●● ●●●● ●●●● ●●●● ●●● ●● ●● ●● ●● ●●●● ●●●● ●●●● ● ●● ●● ●●● ●●● ●● ●● ●● ●● ●● ●●●● ●● ●●● ● ●●● ●● ●●●●● ●● ● ●● ●● ● ●●● ● ●● ● ●●● ● ●● ●●●● ●● ●● ●●● ●●●●●● ● ●● ●● ● ●●● ●● ● ●● ●●●● ●●● ●●● ●● ●●●● ●● ●●● ●●●● ●● ● ●●●● ●● ● ●●●● ●● ● ●●● ●●● ●●● ● ●● ●●●●● ●● ● ●● ●●● ● ●● ●● ●●●●●●● ●●● ●● ● ●● ●● ●● ●●●● ●●● ● ●● ●●●●● ●● ●●●● ● ●●●● ●● ●● ●● ● ●● ●● ●● ●● ●●●● ●●● ●● ●●● ●●● ●● ●●●● ●●●● ●●● ● ●● ●●● ●● ●●●● ● ●●●●● ●●●● ●● ●● ●● ● ●●●● ● ● ●● ● ●● ●● ●●● ● ● ●●● ●● ●●●● ●●●●●● ●●●● ●● ●● ● ●● ●● ●● ●●●● ●●●●● ●● ●●● ●●●●●●●● ●●● ●●● ●●● ●● ●●●● ●● ●● ●●● ●●● ●●● ●● ●● ●●● ●●● ●● ●●●●●●● ●● ●●● ●●● ●●●● ●● ●●● ●● ●●●●● ●●●●● ●●●●●●● ●●● ● ●●●● ● ●●●● ● ●●●● ● ●●● ● ●●●●● ●●● ●● ● ●●● ●●●●● ●● ●●● ●● ●●● ● ●● ●● ●●● ● ●●● ●● ● ●●●●● ●●●● ●●●● ●●● ●● ●● ●● ● ●●●●●● ●●● ●●● ●● ●● ● ●● ●●● ●●●● ● ●● ● ●●● ● ●●●●● ●●●● ●●●●●●● ●●●●● ●●●●● ●● ●● ●●● ● ●●● ●●●●●●●● ● ●●●● ●●● ●● ●● ●●●● ●● ●● ● ●●● ●●●●● ●●●●●●● ● ●●●● ●● ●●● ●●●● ●● ●● ●●● ●●● ● ●●●●●●● ●●●●● ● ●●●● ●● ●●●●● ● ●●●● ●●● ●●●●● ●●●● ●● ●●● ●● ● ●●● ●●● ● ● ●●●● ●●● ● ●● ● ●●●●● ● ●●●● ●● ●● ●●●● ●● ● ●● ● ●●●●●● ● ●●●●●● ● ●●● ● ●● ●● ●● ●● ●●●● ● ●● ●●●●●● ●●●●● ● ●● ●● ● ●●●● ●●●● ●● ●●●●●● ●● ●● ●● ●● ●●● ●● ● ●●●●● ●● ● ●●● ● ●●● ●●●●● ●●● ●● ●● ● ●●● ●●● ●●●●● ●●●● ● ●● ●● ●●● ●● ●●●●●● ●●●●● ●● ●● ●● ●● ●● ●● ● ●●● ●● ●● ● ●●● ●● ●●●●●● ● ●●● ●●●● ● ●●●● ● ●●●●● ●●● ● ●● ● ●●● ●●● ●●● ●●● ●● ●●●●●● ● ●● ●●● ●●●●●●● ●●● ●●● ●●●● ● ●● ●●● ●●●●●●●● ●● ●●● ●●● ●●● ●● ●● ●●● ●●● ●●●● ●●●●● ●● ●●●● ● ● ●● ● ●●● ●● ●●● ●●● ●●●● ●●●●● ●●●● ● ●● ● ●●●● ●●●● ●● ●●● ●●●● ● ●●●● ●● ● ●●●●● ●●●● ●● ●● ●● ●●●● ●●●● ●● ● ●● ●●● ● ● ●●● ● ●● ●● ●● ● ●● ●●● ● ●●●●●●● ● ●●● ●● ●●●●● ●●● ●●● ●●●● ●● ●●●● ●●●● ● ● ●●●● ●●●●●●●● ●● ● ●●● ●●● ●●●●● ● ●● ●●● ● ●●●●●●● ●● ●●●●● ●● ●● ● ●● ●●● ●●● ● ●●● ●● ●● ● ●●●●●●● ● ●●●● ●●● ●●● ●● ●●● ●●● ●●●● ●● ●● ●● ●● ●● ●●● ●● ●●●● ●● ●● ●●●●● ●●● ●●● ● ●● ●●●● ●●● ● ●● ●●● ●● ●●●● ●●●●●●●● ●● ●●● ● ●● ●● ● ●●● ●●●●● ● ●●● ●● ●●● ●●●●● ● ●● ● ●●● ●●● ●●● ●● ●●● ●●●●●●●● ●● ● ●● ●● ●● ●● ● ●●●●● ●●●● ●● ●● ●● ●● ●●●● ● ●●●● ●●● ●● ●●● ● ●● ●●●● ● ●●●● ●● ●●● ●● ● ● ●●● ●●●●●●●●●●●● ● ●●●● ●● ●●● ●● ●● ●●● ●●●●●●● ● ●● ● ●●● ●● ●●● ●●●● ● ●●●● ● ●● ●● ●●●●● ●●●●● ●●●●● ●●●●● ●●● ●●●●●● ●●● ●●● ●●●●●● ● ●●●●● ●●● ●● ●●●● ● ●●●●● ●●● ●● ●● ●●● ●●● ●●●● ●●●●●● ●● ●● ●●● ● ●● ● ●●● ●● ●● ●●●●● ● ●●● ●● ●●●● ●●●● ●●●● ●●● ●● ●●●● ●● ●●● ●●● ●●●●●● ● ●●● ●● ●●●●●●● ●●● ●●● ●●●●●●●●● ●●

2

0 2 4 6 8

●●●●●● ●● ●● ●● ●● ● ●● ●●●●●● ●●●● ●●● ● ●● ●●● ● ●●●●●●● ●● ● ●●●●● ●●● ●●●● ●● ●●● ●● ●● ●●●●● ●● ●●● ●●●●●●● ●●● ●●●●●● ●●●● ● ●● ●● ●●● ● ●●●●● ●●● ●● ●●● ●●● ●●●● ●●● ●● ●● ●● ●●● ●●● ● ●●● ●●● ●●●● ●●● ● ●● ●● ●●● ● ●●●●● ●●● ●●●●● ●● ●● ●● ●●●● ●● ● ●● ●●●● ●●●●● ●●● ●●● ● ●● ● ● ●● ●● ●● ● ●● ●●●●●● ●● ●●● ●● ●● ●●● ●● ●●●●● ●●●●● ●●● ●● ●●●● ●●● ● ● ●●● ● ●● ●●● ● ● ●●●● ●● ●●● ●●● ●● ●●● ●●●●●●● ●●●● ●●● ● ●●● ●●●●● ●●● ●● ●● ●●●●● ●●● ● ●●● ●●●●●● ●●●● ●●● ●●●● ●●●●●● ●●● ● ●● ●●●●●● ●●●●●● ●● ●● ●●●●● ●●●●●●● ●●● ● ●●●●●●● ●●● ●● ●● ●●● ●●●● ● ●● ●● ●●●●● ●●● ●●● ●●●● ●●●● ●●●● ●● ●● ●●●●●●● ●●● ●● ●● ●● ●●● ●●● ● ●●●●● ●●● ●●● ●●●● ● ●● ●●●● ● ●●● ●● ●● ●● ●●●● ● ●●●● ●● ●●●● ●● ●●● ●●● ●●● ●●● ● ● ●●●●● ●●●● ●●●●●●● ●● ●● ●●● ●●●●●● ●●●● ●● ●● ●●● ●●● ●●● ●● ●●● ●●● ●●● ● ●●●● ●●● ●●● ●●●● ●●● ●● ●● ●●●● ●●●● ● ●● ●●● ●●● ●●● ●●●●● ●●●●●● ●●● ● ●●●● ● ● ● ●● ●● ● ●● ●●● ●●● ●●● ●● ●● ●●● ● ●● ● ●●● ●● ●● ●●●●● ●● ●●●●● ●●● ●●● ●●●●● ●●● ●●●●● ●●● ●●●● ●● ●● ●●●●● ●●● ● ●●●●●● ●●● ●●● ●● ● ●●●●● ● ●● ●● ●●●● ●● ●●●●● ●●●●● ●● ●● ●●●● ●●● ●●● ●●● ●●● ●●● ●●● ●● ●●● ●● ●●●●● ● ●● ●● ●●●●● ●●●●●● ●● ●● ●● ● ●●● ●● ●● ●●●● ● ●● ● ● ●●● ●● ●●● ●● ●●● ●●● ●●●● ●●● ●● ● ●● ● ●● ●●● ●●●●● ● ●●● ●●● ●● ●●● ●● ●●● ●●●●●●● ● ●● ●●●● ●● ●●●●● ●● ●●● ● ●● ●●●●● ●●●● ●●● ●● ●● ●●●●● ●●● ●● ● ●●● ●● ●●●● ●● ●● ●● ● ●● ●● ●●●● ● ●● ●●●●● ● ●●●● ●● ●● ●● ●●● ●● ●● ●● ●●● ●● ●● ●●● ●●● ●● ●●● ●●●●● ●●● ●●●●● ●● ●● ●● ● ●● ●●● ● ●●● ●●●●●●●● ●● ●●●● ●● ● ●● ● ● ●● ●● ●● ●● ●● ●● ●●● ●● ●●● ●●●● ●●●● ●● ●●● ●● ●● ●● ● ●●●●●● ●●●● ●●●●● ● ●● ●● ●● ●●● ● ●● ● ●●● ●● ●●● ●● ●●● ●●●●●● ● ●● ●● ●●● ●●●●● ●●●● ● ●●● ●● ● ●● ●● ●●●●●● ●●●●●● ● ●● ●● ● ● ●●● ●● ●●● ●●●● ●● ●● ●●●● ●● ●●●● ● ●●●● ●●● ●● ●● ● ●● ● ● ●●●●● ●●●● ●● ●●● ●●● ●●●●● ●● ●●●● ●●●● ●● ●●●● ●●●● ●● ●●● ●●●● ●● ● ●●●● ● ●●● ●●● ●●● ●●● ● ●● ●● ●●●●● ● ●● ●●●● ● ●●●●● ●●●● ●● ●● ●● ●● ● ●●● ●●●●●● ●● ●●●● ●● ●● ●● ● ●●●● ●● ●●● ●●● ●●●● ●●● ●● ●● ●●● ●● ●●●●● ●●●●●● ● ●● ●●●● ●●● ●● ●●●● ●●●●●●● ●● ●● ●● ●●● ● ●● ●● ●●●●●● ●● ●● ● ●●●●● ●● ●● ●● ●●●● ●● ●●● ● ●● ●●● ● ●●●● ●●● ●● ●● ●●●●●●● ●●●● ●●●●● ● ●●●● ●● ●●● ● ●● ●● ●● ●● ●● ●● ●●● ●● ●● ● ●● ● ●●●● ●● ●● ●●● ●● ●●●●●● ●● ●●●●● ● ●● ● ●●● ● ● ●● ●●● ●●●● ● ●●●● ● ●● ● ●●●● ● ●● ● ●●● ●● ● ●●● ●●● ●● ●●● ●●●●● ● ●● ●● ●● ●●●● ●●● ●●● ●●●● ●●●● ● ●●●● ● ●● ● ●●●●● ● ●●●●● ●●●●●●● ●●● ●●●● ●● ● ●●● ● ●●● ● ● ●● ●●● ●● ●● ●● ● ●● ● ●●●● ●● ●● ● ● ●● ●● ●●●● ● ●● ● ●●● ●●● ●●●●● ●●● ●● ● ●● ●● ●● ●● ●●●● ●●●● ● ●●●●●● ●● ●●●●●● ●●●●● ●●● ●●●●● ●● ●● ●●● ●●● ●●● ●● ●●● ●● ●●●●●●●● ●●● ●● ●●●●● ●● ●●●●● ●● ●●●● ●●●● ●● ●●●●●●●● ●●●● ● ●● ●● ●●● ● ●●● ●●● ● ●●●● ●●●●● ●● ●●●● ●● ●●●●●●●● ●●● ●●●●●● ●● ●● ●● ●● ● ●● ●● ●●● ●● ●●●● ●● ●●● ●● ●●● ●●●●●● ●●● ●●●● ●●●●● ● ●●● ●●● ●● ●●● ● ●●●● ● ●●● ●● ●●● ●●● ● ●● ●●●●● ●●●● ●●●●● ●●● ●●● ●●● ●●● ●●● ●●●● ●● ●●●●●●●●● ●● ●●●● ●●● ● ●● ● ●● ● ● ●●● ●●●● ●●● ●●●●● ●● ●● ●● ●●●●● ●● ●● ●● ●●●●●●●● ● ●●●● ●●●● ● ●●● ●●● ●●● ●●● ●●●● ●●● ● ●● ●● ●● ●● ●● ●● ●● ●● ●●● ● ●●● ●●● ●●●● ●● ●●●●●● ●●● ● ●● ●●●●●●●● ●●● ●● ●●●●●● ● ●● ● ●●●●● ● ●● ●●●● ●●● ● ●●●●●● ● ● ●● ● ●●● ●● ● ● ●●● ●●●● ●● ●● ●●● ●● ●● ●●●● ●● ● ●●● ●● ●●● ●● ●● ● ●● ●●●● ●● ●● ●●● ● ●● ●● ●●●● ●●● ●● ●● ● ●● ●● ●●●●●●●● ●●● ● ●●● ●●● ●●●● ●●● ●● ●●●● ● ●●●● ●● ●●● ●●● ●● ●● ●●● ●●●●●●●● ●● ●●●● ● ●●● ●●● ●● ●●● ●● ●●●●● ●●● ●● ●●● ● ●●● ● ●● ●●● ●●●● ●●● ●● ●●● ● ●● ●●● ●●●●●●● ●● ●●●●● ● ● ●● ●● ●● ● ● ●●●●●● ●● ●● ● ●●●●●● ●●●● ● ●●●● ●● ●●● ●● ●● ●● ● ●● ●● ●● ●● ●● ●●● ●●●● ●●● ● ●●●●● ●●● ●●●● ●● ●●●●● ●● ● ●●●●● ●● ●●● ●● ●● ●●●●● ● ●● ●●●●●●●●●●● ●● ●● ●●● ●● ●●●● ●● ● ●● ●● ●●●●● ● ●●● ●●●●● ●●● ●● ●● ●●● ●● ●●● ●● ●●● ●●● ●●●●● ●●●● ●●●●● ●● ●● ● ● ●● ● ●●●● ●●● ● ●● ● ●●●●●● ●● ●●●●●● ●● ●● ●● ● ●●● ●●●●● ● ●●● ●●● ●●●●● ●●● ●●●●●● ●●● ●●●●●● ●●●●● ●●● ●●●● ●●● ●●● ●● ●● ● ● ●●●● ●●● ●● ●●●● ● ● ●●●●● ● ●●● ●●●● ●●●●● ●●●●● ● ●●●●● ●●● ●●● ●● ●● ●● ● ●● ● ●● ●● ●● ●●●●●● ● ●● ●●●● ●● ●●● ●●● ●●● ●● ●●●● ●●● ●●● ●●● ● ●●● ●● ● ●●●●● ●●●●●●●● ●● ●●●● ● ●●●●●● ●● ●● ●● ●●● ●●● ●● ●●●● ●●●●● ●● ●● ●● ●● ●● ●●●●● ●● ●●● ●● ●● ●●● ●●● ●●● ●● ●●●●●● ●● ●●● ●● ●● ●●● ●● ●●● ●● ●● ●●●●●●● ●●●● ●● ●●● ●●●● ●●● ● ●● ●●●●●●●● ●● ●●● ●●●● ● ●●● ●● ●● ●● ● ●●●● ●● ●● ● ●●● ● ● ● ●●● ●●●● ●●●●●●● ●●●●● ●●●● ●●● ●● ● ●● ●●●● ●● ●●●● ●●● ●● ●●●●● ● ● ●● ● ●●● ●●● ● ●● ●● ●●●● ●●●●●●● ●●●● ●●● ●● ●●● ●● ●● ● ● ●●●●● ●● ●●● ●● ●●● ●● ●●● ●●● ●● ●● ●●● ●● ●● ●●●●●●●●● ● ●●●●● ●●●● ●● ●● ●●● ●● ●● ● ●● ●●●●●●● ●● ●●● ●●● ●● ●● ●●●● ●●●● ●● ● ●● ●● ●● ●●● ●●●● ● ●● ● ●●● ●●● ●● ●●● ● ●●● ●●● ● ●● ●●●●● ●● ● ●●●● ●● ● ●●●● ●● ● ●● ●● ●●● ●● ● ● ●●●●●● ●●●● ● ●●●● ●●● ● ●● ●● ●● ●●● ● ●●●●● ●●● ●●●● ●●● ●●●●●● ● ●● ●● ●●●●●●● ●●●● ● ● ●● ●● ●●●● ●●●●● ●●● ● ●●●●●● ● ●●●●●● ●● ●●●● ●●● ●●●● ● ●● ●●●●●●● ● ●●● ●●●● ●● ●●● ● ●●●●●● ●●●● ●●● ●●●●● ●●● ●●● ●●●● ●●●● ●● ●● ●● ● ●●●●● ● ●● ●● ●●● ●● ●●● ●● ●●● ●●● ●● ● ●●●●● ●●●●● ● ●● ●●● ●●● ●● ●●●● ● ●●● ●●●●● ●● ●● ●● ●●●●●●● ●● ● ●●● ●●●● ●● ●● ●● ●● ●● ●●●● ●●● ● ●●● ● ●●●●●●●●● ●●● ●●●●●● ●●● ●● ●● ● ●●● ●● ●●●●● ●● ●● ●● ●●●●● ●●● ● ●●●● ●●● ●● ● ●● ●●●●● ●●● ●●● ●● ●● ●●●●●● ● ●●●● ● ●● ● ● ●●●●● ●●●● ●● ● ●●● ●●● ●●●● ●● ●●● ● ●● ●● ●● ●● ●● ●●●● ● ●● ●● ●● ● ● ●●●● ●● ●● ●●● ●● ●●●●● ●●● ● ●● ●●●●● ● ●● ●●●● ●● ●● ●● ● ●●●●●●● ●●●● ●● ●●● ●●●●● ●●● ● ●●●●●● ●●●● ●● ●●●●● ●●● ●● ●●●● ● ●●●● ●● ● ●●● ●●●● ●●●●●●●● ●● ● ●●● ● ● ●●● ●●● ●● ●● ●● ● ●● ●●● ●●● ●● ●● ●●●● ● ●●● ●●● ●● ● ●● ● ●● ● ●● ●● ●●●●● ●●●● ●● ●●● ●●●● ●● ●● ●● ● ●●● ●● ●●● ● ●● ●●●●● ●●● ●●● ●●●● ●● ●●●●● ●●● ●● ●●● ●● ● ●● ● ● ●●● ●●● ●● ●●● ●●● ●●● ●●●● ●●● ●● ●●●●●●●● ● ●●● ●● ● ●●● ●● ●●●● ●●●● ●● ● ● ●● ●● ●● ●● ●● ●●●● ● ●●●●● ● ●● ● ●●●●● ●●●● ●●●● ● ●●● ●●●● ●●● ●●●●●● ●● ●●● ●●●●●● ●● ●●●●● ●●● ●●● ●● ●●● ●●●●●● ●● ●●●●●● ●● ● ●●● ●●● ●●● ●● ●● ●●●● ●●● ●● ●● ● ●●●●● ●●● ● ●●●● ●●● ●● ●●●●●● ● ●●● ●● ●●● ●●● ●● ●●● ●●●● ●●●●● ●●● ●●● ●●● ●●● ●●● ●●●● ●● ●● ●●● ●● ●● ●●● ● ●● ●● ●●● ●● ●●●●● ●●● ●● ●●●● ●● ●●●●● ●●●● ●● ●●●● ●● ● ●●●●●●● ●●●●● ●●●●● ●●●● ●● ●●●●● ●●● ●●● ● ●● ●● ●●●●●● ●● ●●● ● ●●● ●●●● ●● ●●● ●● ●● ●● ●●●● ●●●● ●● ●● ●●● ●●●●● ●●●● ●●●● ●●●● ●●●● ●●●●● ● ●●●●● ●● ●●●● ● ●●● ●●●● ●●●●● ●● ●●●● ●● ●● ● ●●● ●● ●●●●● ● ● ●●● ●● ●●●● ●●●●● ● ●●● ●● ● ●● ●●●● ● ●●●● ●● ●●● ●● ●● ● ●● ● ●●●● ●●●●●● ●●●● ●●● ●●●●●●● ●●●● ●●●●● ● ●●●●● ● ●●●●● ●●●●●●●● ●●●●●● ● ●● ●● ●●●●● ●●● ●●● ● ●●●●● ●●● ●●● ● ●●● ●●●● ●● ●●● ●●● ●● ● ●●● ●●● ●

4

●●●● ● ●●●●● ●●● ●●● ●●● ● ●●● ●●● ●●●●● ● ●● ●●● ●●● ● ●● ● ●●●●● ● ●●●● ●● ●● ●●● ●●● ●●● ●● ●● ●● ● ●●●●● ● ●● ●●● ● ● ●● ● ●●●● ●●●●●●●●● ●● ●●● ● ●● ● ●● ●● ● ● ●●●● ● ●●● ● ●● ●●● ●● ● ●● ● ●● ●●● ●● ● ●●●● ● ●●●● ● ● ●●●●● ●● ●●●● ●●●●● ●●●●● ● ●●● ●● ●● ●●●●●●● ●● ●●● ● ●●● ●●●● ●● ●●● ●●●● ●●●● ● ●●●● ●●●● ●●●● ● ●● ●●●●●● ●●● ●●● ●●●●●●●●●● ●● ● ●●● ● ●●● ● ●●● ●● ●●● ●● ●●●●● ● ●●●●●●● ●●●● ●● ●● ●●●● ●●●●● ● ● ●● ●●●● ●●●●● ●●● ●●●●● ●●● ●● ●●●●● ● ●● ●●●●●● ●● ●● ● ●● ●●● ●● ●●● ●● ●● ●●●● ●●●● ●●● ●● ●●●●● ● ●●● ●●● ●●● ●●●●● ● ● ●●●●●●●●●● ●●● ●●●●● ●● ●● ●●● ●● ●●● ●●● ●●● ●●● ●● ●● ●● ●● ●●● ● ●●●● ●● ●●●● ● ●● ●● ● ●●● ●● ●●● ●● ● ●● ● ●●● ●●●● ●●● ●●●● ●●●● ●●● ●●● ●●● ●●● ●●●●● ●● ●●●● ●●●●● ● ●●●●● ●●●●● ●●● ● ●●●● ●● ●●●●●●●●●● ● ●● ●● ●● ●●●●● ●●●● ●●●● ●●●● ●●● ●● ●●●● ●● ● ●●●●●●● ●●● ●● ●●●●● ●● ●●● ● ●●● ●●● ●● ●● ● ●●●● ●● ●● ●● ●●● ●● ●● ●● ●● ● ●● ●● ●● ● ●●●●● ●●●●● ●● ●●● ●●● ●●●●● ●● ●● ●●●● ●● ●● ●●●●●● ●● ●●●●● ● ●● ●●● ● ●● ●●●● ●● ●●● ●●● ●●●●● ●●●●● ●● ●●● ●● ●●● ●●●● ●●●●● ●● ●●●●● ●●●● ● ● ●● ● ●● ●● ●●●● ●● ●● ●● ●●●●● ●●●● ● ●●●● ● ●● ●●●● ●● ●●● ●● ●●●● ● ●● ● ●●● ● ● ● ●●● ●●● ● ●●● ●●●●●●● ●●●● ●● ●●● ●●●● ●● ●●●● ● ● ●● ●●●● ●●● ● ●●● ●●●●●● ●●●● ●●●● ●●● ●● ● ●● ●● ●●●● ●● ●●● ● ●●● ●●●● ●●● ●● ●●●●● ●●●● ●●●● ●●● ●●● ●● ●●●●●●●● ●●●● ● ●● ●● ●● ●●●● ●●● ●●● ● ●● ●● ●● ●● ●● ●● ●● ●● ● ●● ●●●● ●●●● ● ●●●●● ● ●● ● ●● ●●●● ●● ● ●●●● ●●● ●●● ● ●●● ●●● ●●●●● ●● ● ●●● ●●● ●● ● ●●● ●● ● ●● ●●●●● ●●● ● ●●●●●●●● ●●●●●●●●●● ●● ●●● ●●●●● ●● ●●●● ●● ●● ●●● ●●●●● ●●●● ● ●●● ●●●● ●● ● ●●● ● ●●●● ● ●●●●●● ● ●●● ●● ● ●●●●●● ● ●●●●● ●●● ●● ●●●● ● ●●●●● ●●●●●● ●●● ●● ●●● ●● ●● ●●●● ● ●●● ●● ●● ●●●●● ●●● ●●●●●● ● ●● ●●●● ●● ●● ●●● ● ●● ● ●●● ●● ●●●●● ●● ●●●● ●●●●● ●●● ● ●●●● ●● ●●●●● ●●●●●● ●●● ●● ● ●● ●● ● ●●● ●●● ●● ●● ●● ●●●●● ●●●● ●●● ●●● ● ●●● ●● ●●●● ● ●●●● ●●●●●●●●●●● ●●●● ●● ●● ●● ●● ●●● ●●● ●●● ●●● ●● ●● ●●● ●●● ● ●● ●●● ●● ●● ●●●● ● ● ●●●● ●●● ●●●● ●●● ●●●● ●● ●●●●● ●●●● ● ●● ● ●●●● ●●● ●●● ●● ●● ●● ●●●●● ●●● ●● ● ●● ●● ●● ●● ●●● ●●●● ●● ●●●●● ●● ●●●●● ●●●● ● ●● ●● ●● ● ●● ●●● ●●●● ●●● ●●●● ●●●●●● ●●● ● ●●●● ●● ● ●● ●● ● ●● ●● ●●● ●●● ●●● ●●●● ●● ●●● ●● ●● ●●●●● ● ● ●●●●●● ●●● ●● ●● ●●●● ●● ●● ●● ●●●●● ●●● ● ●●●●● ●●●● ●●● ●●●● ● ●●●●●●●●● ●●● ● ●●● ●●● ●●●●●● ●● ●●●●●●● ● ●● ●●● ●● ●●●●●●●●●● ● ●● ●●●●● ●● ●●● ●●●● ● ●● ●● ● ●● ● ● ●●● ● ●●●● ●●●● ●● ● ●●● ●● ● ●● ● ●●● ●● ●●●● ●●●●●●● ●●●● ●●●● ●●●● ●● ●● ● ●●●●● ●● ●●● ●●● ●●●●●●●●●●● ●● ●●● ●● ● ●● ●● ●●●●● ●● ● ● ●● ●● ● ●●● ●● ●● ● ●● ●●●●● ●●●●● ●● ●● ●● ●●● ●● ●● ●●●● ●●●●● ●●● ●● ●● ●● ●●●●● ● ●●● ●●● ● ●●●●● ● ●●● ●● ●●● ●● ●●●● ●● ● ● ●● ●● ● ●●● ●●●● ●●● ●●●● ●●●● ●● ●● ●● ●● ●●● ●● ●● ●● ● ● ●●● ●● ●● ●●●●● ●● ●● ●●● ●● ●● ●● ●● ● ●● ●●●●●●● ●● ●● ●● ●● ●●● ●● ●●●● ●●●● ●● ●● ●●●● ●●● ●●● ●● ●●●● ●● ●●●● ●●● ●● ●● ●●●●● ●● ●● ●●●●● ●● ●●● ●●● ●●●●● ●●● ● ●●● ●● ●● ●●● ●●● ●●●● ● ● ●●● ● ●●●● ●●● ●●●●●● ● ● ●●●● ●● ● ● ●● ●● ●●● ●● ● ●● ●●● ● ●●● ●●● ● ●●●● ● ●●● ●● ●●● ●● ●●● ● ●● ●● ● ● ● ●● ●●●●●● ●● ● ●● ●●●● ●●●● ●●●●● ●● ●● ●●● ●●● ●● ●● ●● ●● ●●● ●●●● ●●● ●● ●● ●● ●● ●●●● ●●● ●● ●●●● ● ●● ● ●● ●● ● ●● ● ●● ●● ●● ●●● ●●●●●●● ● ●●● ●● ● ●● ●●●●●●● ●● ● ●●● ●●● ●●●● ●●●● ●●● ● ●● ●●● ●●●● ●●●● ●●●●● ●● ●● ●● ●● ●●●●● ●●●●●● ●●●●● ●● ● ●●●●●● ● ●● ●● ●●● ●●● ●● ● ●●● ● ●●●● ● ●● ●●● ●●●● ●●● ●● ●●●● ● ●●● ●● ●●●● ● ●●● ●●●●●●● ●●● ●●●● ●●● ●● ●●●● ●●● ●● ●● ●● ● ●● ●● ●●● ●●● ●● ● ●● ●● ●● ●●●●● ●● ● ●●●●● ●●●●●●● ●●●●● ●●●● ●●●●● ●●● ●●●● ●● ● ●●●● ●● ●● ●●●●●● ●●●●● ●● ●●●● ●● ● ●●●● ● ●● ●●● ●● ● ●● ●●● ● ●●●●●● ●● ●●● ● ●●●●● ●●●●● ●● ● ●●●● ●●● ●●●● ● ●● ● ●● ● ●●●● ●● ●● ●●●● ●● ●● ●● ● ● ●● ●●● ●● ●● ●●●● ●●●● ●●●● ● ●●● ●● ●● ●● ●●●●●●● ●●● ●● ●●●● ● ●● ● ●●● ●● ●●● ●●●●● ●●● ● ●●● ●●●●●●● ●● ● ●●● ●● ●●●● ●● ●● ●●● ●●●●● ●● ●●● ●●●●● ● ●● ●●●●●● ●● ●●● ●●● ● ●● ●● ●●● ●● ●● ●● ●● ●● ●● ●●● ●●● ● ●●●● ● ●●●●●● ●● ●●● ●● ●● ●●● ●● ●●●●● ●●●● ●● ●●●● ●●●●●●●● ● ●●●●● ●●● ● ●●●● ●● ●●●●●●● ●● ●●● ●●● ●●●●●●● ●●●● ● ●●●● ●● ●●● ●●● ●●●● ● ●● ●● ●●● ●●● ●●● ●●● ●● ● ●●● ●●● ●●●● ● ●●●●●● ●●●●● ● ●●●●●● ●●●●●● ●●● ● ● ●●●●●● ● ● ●● ●●●●● ●● ●● ●●●● ●●●●●●● ●●● ●●● ●● ●●●●● ●●● ●● ●●●● ●●●●●● ●● ●●● ● ●● ●●●●● ●●●● ●●● ●●● ● ●●● ●● ●●●●● ●● ●●● ●●●● ● ●●●●●● ●● ●●● ●● ● ●●● ● ●●● ●● ●● ●●●● ●● ●● ●●●●●● ● ●●● ● ●● ●● ● ●● ●●●● ●● ●● ● ●●●●●● ●●●● ● ●●●● ●● ●●● ●● ●●● ●●● ●●● ●●●●● ●●●● ●● ●●●● ●●●●●● ● ●●●●● ●●●●●● ●●●●● ● ●● ●●●●● ●● ●● ●●●●● ●●● ● ●● ●● ●●●●● ●●●● ●● ●●● ● ●● ●● ●● ● ●● ●●● ●●●● ●●●●●● ●● ●● ●●● ●●● ●●● ●●●● ● ●● ● ●●● ●● ●●●● ●● ●● ●●●●● ●●●● ● ●●● ● ●● ●●●●●● ●●●●●●●●●●●●● ●●●● ●● ●● ●● ●● ●●●● ●●●● ●●● ●●●● ●●●● ● ●●●●●● ●●● ●●● ●● ● ●● ●●●●● ●●●● ● ●●● ●●● ●● ●●●●● ●●●●●● ●●● ●● ●●●● ●●●● ●● ●●● ● ●●● ●●● ●●●● ●● ●●● ●●●● ●● ● ●● ●●●●●● ●● ●●●●● ●● ●●● ●● ●●● ●●●● ● ●●●●● ● ● ●●●● ●● ● ●●● ●● ●●●● ●● ●●●● ●●● ●● ●● ●● ●● ●●●● ● ●● ●● ● ●●● ●●● ●● ● ●● ● ● ●●● ●●●●●● ●●● ●● ●● ● ●● ● ●●●● ●● ●● ● ●●●● ●●●● ●●● ●●●● ●● ●● ●● ●●●●●● ● ●●● ●● ● ●●● ●●●●● ●●●● ●● ●●●●● ●●●● ●● ●● ●● ● ●●●●● ●●● ● ●● ●●● ●● ●●●● ●● ●● ● ●●●● ●●●● ●● ●● ● ●●● ●●● ●●●● ●●●●●● ● ●●●● ●●● ●●●●● ●●● ●● ● ●● ●● ●●● ●●●●● ●●●● ●●●● ●●● ● ●●● ●●● ● ●●● ●● ●●● ●●●● ●●●● ●●● ●● ●●● ● ● ●●●●● ● ●●● ●● ●● ● ●● ●● ●●●● ●● ●● ● ●●●● ●● ●●● ●● ●● ●●● ●●● ●●●●●●●● ●●● ●● ●● ●● ●●● ●● ●● ●●● ●●● ●●● ●●● ●● ●● ●●● ●● ● ●● ●● ●●● ●●● ●● ●●● ●● ● ●●●● ●● ●● ●● ●●●● ●● ●● ●● ●●●●●●● ●●●● ●●●● ● ●●●● ● ●●●● ●●●●● ●●●● ●● ●●●●●● ●●● ●●●●● ●● ●● ●●●●●● ●●●●● ●● ●● ●●●●●● ●●●● ● ●● ●●●●●● ●●● ● ●●● ●●● ●●●● ●●●●● ●●●● ● ●●●●●●●● ●● ●● ●●●●● ●●●●● ●●● ●● ●● ●●●●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●● ●●● ●●●● ●●● ●●● ●●● ●●● ● ●●●● ●●●●●●●● ●●● ● ● ●● ●●● ●● ●●●●●●●●● ●●●●●● ● ●●● ●● ●●● ●●● ●●●● ●●● ●● ●●● ●● ●● ●●● ●●● ●● ●● ●●● ● ●●● ●●● ●● ●●●● ●●●● ●● ●● ●●● ●●● ●● ●●●●● ●●●●● ●● ● ●● ●●● ●● ●● ●●● ● ●●●●● ●● ●●●●● ●●● ●●●●●●●●●●● ●●●●●●● ● ●● ●● ●●●●●●●● ●●● ●●● ●●● ●●●●● ●● ● ●● ●● ●●● ●●●●● ●● ● ●●●●● ●●●●●● ●●●●● ●●●●● ●●●●●● ●●● ●● ●●● ● ●●● ●●● ●● ●●●●●●● ●● ● ●●● ● ●●● ●● ●●● ●●●● ● ●●● ●●●● ●●● ●●●● ●● ●● ●●●●● ●● ●●● ●●● ●●● ●●● ● ●● ●● ●●●●●● ●●● ●●●●● ●●● ●● ●●●● ●● ●●● ●●●●●●● ● ●● ●●● ●● ●●●●● ●●●● ●● ●● ●●● ●●● ●●●●●● ●●●● ●●●● ●●●● ●● ●●●● ●●●● ●●● ●●● ●●●●● ●● ● ●● ●● ●●● ●●● ●●●● ●● ●● ● ●● ●● ●●●● ●●● ●●● ●● ●●● ●●●● ●●● ●●●●●● ●●●● ● ● ●●●●● ●●●● ●●● ●●●●● ●●● ●● ●●●●● ●●● ●●● ●●● ●●●●●● ●● ● ●●●● ●●● ●●● ●●●●● ●● ●●●●● ● ● ●●●●●● ●●● ●●● ●●●● ●●● ●●● ●● ●●● ●●● ●●●●● ● ●●● ●●● ●● ●●● ●●●●●●●● ● ●●●●●●●●●●●●● ●● ●●●● ●●● ●● ●● ●●●●● ●● ● ● ● ●●● ●●● ●●●● ●●●● ● ●●● ●●●● ●● ●●●● ●●●●● ● ●●● ●● ●● ●● ●●● ●●● ●● ●● ●● ●● ●● ●●●● ●●● ●●●●● ●● ● ●●●●●● ●● ●●● ● ●●●●● ●●● ●● ●●●● ● ●●●● ●●●●●●● ● ●●● ●● ●●● ●● ●●● ●●● ● ●● ●●● ●●●●● ●●●●● ●●●● ● ●●● ●●● ● ●●●●●● ● ●●●● ● ●● ●●● ●●●● ●● ●●●●●● ● ●● ● ●●● ●●● ● ●●●● ●● ●●● ●●●●● ●●● ●● ●● ●●●● ●●● ●● ●● ●●● ●●● ●●●● ●● ●●● ●● ● ●●● ●●●●● ●●●●●● ●● ●● ●●●●●● ● ●●● ●●●● ●●● ●●●● ●●●● ●● ●●●●●● ●●● ●● ●● ● ●●●● ●● ●● ●●● ●●●● ● ●● ●● ●●● ●● ●●● ●●● ●●● ●● ●●● ● ●●● ●●●●● ●● ● ●● ●● ●● ●●●●● ●●●● ●●● ● ●● ●● ●●●●●●●● ●●●● ●● ● ●● ●● ●● ●●●●● ●● ●●●● ●●● ●●●● ●●●●● ●●●● ●●● ●● ●●●●● ●● ●●● ●●● ●●●● ●● ● ●●● ●●● ●●● ●●● ●●●● ●● ● ●●●● ●●● ● ●●●●●● ●● ● ●● ●● ● ●●● ●●● ●●● ●● ● ●●● ●● ●●●●● ●● ●● ● ●●●● ●●●● ● ●●●●●● ●●● ● ●● ●●●●● ●●●● ●● ●●●● ● ●● ●● ●●● ●●● ●● ●●● ●●● ●●●● ●● ●● ●●●● ●●● ●●●● ● ●●●● ●● ●●● ●● ●●●● ●●● ●●●● ●● ●● ●●● ●●● ●●●●●●●●●● ● ●● ● ●●●●●● ●●●● ●● ●●●● ●● ●● ●● ●●● ●● ● ●● ●● ●● ●●●●● ●●● ● ●●● ● ●●● ●● ● ●● ●●●● ●●● ●●●●● ●● ●●●● ●● ●● ●●● ●● ● ●● ●●●●●●●● ●● ●●● ●●● ● ●● ● ● ●●● ●● ●●● ●●● ●●● ●●● ●●●● ●●● ● ●●● ●● ● ●●● ● ●●●● ●●●●● ●● ●●●● ●●●●● ●● ●●●● ●●● ●● ●●●●● ●● ●●● ● ●●● ●●● ●● ●● ●●● ● ●● ●●●● ●●●●● ●●● ●●●● ●●● ●● ●● ● ●●●●●●●●●● ●● ● ●● ●● ●●●● ●● ●● ●●●●● ● ●●●●● ●● ●●● ●●●● ● ●●●●● ●●●● ●●● ●●●●●● ● ●● ● ●● ●●●●●● ●●● ●● ●● ●●● ●●●●● ●● ●●● ●● ●● ●● ●● ●●● ●● ●●●●●● ●● ●● ●●●●●●● ●●● ●● ●● ●●●●● ●● ●●● ●● ●●●●●● ● ●● ●● ●●●● ●● ●●●● ●●●●●● ● ●●●●● ●

6

0 2 4 6 8

● ● ●●●●● ●● ●●● ●●● ●● ●● ● ●●●● ● ● ●● ●●●●●● ●●● ●●● ●●● ●● ●●●●● ●●●● ●● ●●● ●●●● ●● ●●●●● ●● ●●●●●● ● ●● ● ●● ●●● ●●●●● ● ●●● ●●●● ● ●● ●●● ● ●●●●● ● ●●●● ● ●●●●●●●● ●●●● ●●●● ●● ●●● ●●●●● ● ●●●●●● ● ●● ●●● ●●●● ●●●●● ●●● ●●● ●●● ● ●●●● ●●●● ● ●● ●●● ●●● ●●● ●●● ●●●● ● ●●●● ● ●●● ●●●● ●● ●●● ●● ●●●● ●● ●●●●●●●●● ●●● ●●● ●● ●●●● ●● ●● ●●● ●● ● ●●● ●●●● ●●● ●● ●● ●●● ●● ●●● ●●● ●●● ●●● ●●●● ● ● ●●● ●● ●● ●●●●● ● ●●● ●● ●● ●●● ●● ●●●●●●●● ●● ●●● ●● ●●●●●●● ● ●● ●●● ●●● ●● ●● ●● ●● ●●●●●● ●● ●●● ●● ●●● ●●●● ● ●●●●●● ●● ●● ●●●●● ●● ●●●● ●●●●●● ●●● ● ●●● ●●●● ●●● ●●● ● ● ●●●●●●●● ●● ●●●●● ●● ● ●●●●●●●● ●●● ●● ●●●● ●●●●● ● ●●●●●●●●● ●●●● ●●● ● ●●●●● ● ●●●● ● ●●●●●● ●●●● ●●● ●●●● ●●●●● ●● ●● ● ● ● ●●●● ●●● ●● ●●● ●● ● ●● ●● ● ●●● ●● ●●● ●●● ●●●● ●●●●●●●● ●●● ●●● ● ●● ●●● ●● ●●● ●●●●●● ●●●●● ●●● ●●● ●●●●● ●●● ●● ●● ●● ●● ●● ●●●● ●●●● ●●●●● ● ●●● ●●● ●● ●●● ●●● ●●●● ●●●●● ●●● ●●●●● ●●●●●●●● ●● ●●● ●● ●●● ●●● ● ●●● ●●●●●● ● ●●● ● ●●● ● ●● ●●● ●● ● ●● ●●● ●●● ●●●● ●● ●●●● ●● ●● ●● ●●●● ●●●●● ●●●●● ●●●●●● ● ●●●●● ●●●●●● ●● ●● ●●●●● ●● ●●● ●● ● ●●●●● ●● ●●● ●●●●● ●●● ●● ●●●●●● ●● ●●●● ● ●●●●● ● ●● ●●● ●●●●● ●●●●● ●●●● ●●● ●● ●●●● ● ●● ●●● ●● ●●●●● ●●● ●● ●●●●●●● ●●●● ●● ●●● ●●● ●●● ● ●● ●● ●●● ●●● ●●● ● ●● ●●● ● ●● ●● ● ●●● ●●●●●● ●●●●●●● ●●●●● ● ●●●●● ●●●●●● ●●●●● ●●●● ●● ●● ●● ●● ● ●●● ●●● ● ●●●● ●● ●● ● ●●● ●● ●●● ●●● ●● ● ●● ●● ●●●●●● ●● ●● ●●●● ●● ●● ●● ●● ●● ●●●● ●● ● ● ●●●●● ● ●●● ●●●●●● ●●●●● ●●●● ●● ●●●●●● ●● ●● ● ●●●●● ●● ●●●●● ●● ●● ●●● ●● ●●●●● ●● ● ●● ●●● ● ●● ●●●●● ●● ● ●●●●● ●● ● ●●● ●●● ●●●●●●●●●● ●● ●● ●●● ● ● ●● ● ●●●●● ●● ● ●●●●● ●● ●●●●●● ●● ●● ●● ●● ●●●●● ●●●● ● ●● ●● ● ●● ●● ● ●● ●●●● ●●● ●● ●● ●● ●● ●●●●● ● ● ●● ●● ●●●● ● ●● ●●● ●●●● ●●●●● ●●● ● ●●● ●● ●● ●●● ●● ●● ●● ● ●● ●● ●●●●●● ● ●● ●●● ●● ●● ●●● ●●●● ●● ●● ●●● ●● ● ●●●●●●● ●●●●● ●●●●●● ●●●●● ●●●● ●●●●● ●●●●●●●● ●●●●● ●● ●●●●●● ● ●●● ●● ●●●●● ●● ●● ●● ●● ●● ●● ●●● ●●● ●●● ●●●●●● ●● ●●●● ●● ● ●●● ●●●●● ●●● ●●● ●●●● ●● ● ●●● ● ●●●●●●●● ● ●●●● ●● ●● ●●● ●● ● ●●●●● ●● ●●●●● ●●●● ●●●● ●● ●● ●● ● ●●●●● ●●● ●● ●●●● ●●● ●● ●●●●● ●● ● ●●●●● ●● ●●● ●●● ● ●●●● ●●● ●● ●●● ●● ●●●● ●● ●●●● ●●●●●● ●● ●●●●●●●● ● ●●● ●● ●●●● ● ●● ●●● ●●● ●●●● ●●●● ●●●●● ●●●●●●● ●● ●●●●● ●● ● ●●●● ●●● ●● ●●●● ●●●●●●● ●● ●●●●●● ●● ● ●●● ●●●● ●●●● ●● ●●●●●● ●● ●● ●●●● ●●●● ● ●● ● ●●● ●● ●●●●●● ●● ●●● ●●● ● ●●●● ● ●●●●● ● ●●●● ● ●●● ● ●● ●●●● ●●●●●●●●● ●● ●●● ●●●● ● ●●●● ●● ●●●● ●● ● ●●● ● ●● ●●●●●● ●●● ●● ●●● ●●● ●● ●●●●●● ●●●●●●● ● ●●● ●●●● ●● ●● ● ● ●●●●● ● ●● ● ●● ●● ●●● ●●● ●●●●● ●●● ●●● ●●●● ●● ●● ●●● ●●●● ● ●●●● ●● ●●●●●● ●● ●●●● ●●● ●● ●●● ●● ●●● ●●● ●●● ●● ●● ●● ●●●● ●● ●●● ●●●●● ● ● ●● ●●● ●●● ●● ●●●● ●●●●●● ●● ● ●● ● ●●● ●●● ●●● ●● ● ●●●●●●● ●● ●●●● ● ●●●● ●●●● ●● ●●●● ●●●●●● ●●●● ●●● ● ●● ● ●● ●● ●● ●●● ● ●●● ●●● ● ● ●●● ●●● ●● ●● ● ●●● ● ●●●● ● ●●●●● ● ●●● ●● ●●● ●● ●●● ●● ●● ●● ● ●●●● ●● ●●●● ● ●●● ●●●●●● ●●●● ●●●● ●●● ●●● ●● ●●●●●●●●● ●●● ●●●● ●● ●●●● ●●●● ● ●●●●● ●●●● ●●●● ●● ●●● ● ●● ●●● ●●●● ●●●●●●●● ●● ●●●● ●●● ●● ● ●●●● ●● ●●●● ●● ●●●●●●●●●● ●● ● ●● ●●●● ●● ● ● ●●● ●● ●●●●● ●●●●● ●●● ●● ●●● ●●●● ●● ● ●●●● ● ● ●●●● ●●●●● ●●● ●● ●●●●● ●●●● ●●●● ●● ●●● ●●● ●●● ●● ●●●●●●●●●●●●● ●● ● ●●●●●● ● ●●●● ● ●● ●● ●● ●●●●●●● ●●● ●●● ●●● ●● ●●●● ●● ●●●●●●● ●●● ●●●●● ● ● ●● ●● ●●● ●●● ● ●●● ●● ● ●● ●●● ● ●●●● ●●●●● ● ●●●● ●● ●●● ●● ●●●● ●● ●●● ●● ● ●●●●●●●● ● ●●●●● ●●● ●● ●● ●● ●●● ●● ●●●●●● ●●●●● ●●●●●● ●● ●● ● ●●●●● ●●● ●●● ●●●● ● ●●● ●● ●● ●● ●● ●●● ●● ●●●● ●●● ●●● ●●●● ●●●● ●● ●●●● ●●● ●●●● ●●●● ●● ● ●● ● ●●● ●● ●● ●●●●● ●●● ● ●● ●●● ●● ●● ●● ●● ●●●● ● ●● ●● ●●●● ●●●● ●●● ● ●●● ●● ● ●●● ●● ●●● ●●●●●●●●● ●●●●● ●●●● ●●● ●●●●●● ●●● ●●● ●● ●● ●●●● ●●● ●●● ●● ● ●●●● ●● ●●●● ●●●●●● ●●● ●● ●●●● ● ●● ●● ● ●●●●●●●● ●●●●●●● ●● ● ● ●●● ●● ●● ●● ●●●● ●●● ●●●●● ●●●●●● ● ●●● ●●●● ●●●● ● ●● ●● ●●●● ●●●●● ●● ● ●● ●●● ● ●● ●●● ●●● ● ●●●●● ●● ●● ●● ●● ●● ●●● ● ● ●●●● ●●●●● ●● ● ●●●● ● ●●● ●●● ● ●● ●● ●●●● ●● ●●●● ●●●●●●● ●●●●●● ● ●●● ●● ● ●●●●● ●● ●● ● ●●● ● ●● ●● ● ●●● ●●● ●● ●● ●●●●● ●●●●●● ●●● ● ●● ●●● ●●● ●●●● ●● ●● ● ●● ●●●●● ●●● ●● ●●● ●● ●● ●●●● ●● ●● ●● ●● ●●● ●● ●● ●●● ●●●● ●●●● ● ●●●●● ● ●● ●●● ●●●● ●● ●●● ●● ●●●●● ●● ●● ●● ●●● ●● ●● ●● ●● ●●● ●● ●● ●●●●●● ●● ●●● ●●●● ●●● ●●● ●●● ●●●● ●● ●●● ●● ●●●● ●● ●●●● ● ●● ●●●● ●●●●●●●●●● ●● ●● ●●●● ●●● ●●●●● ●● ● ●● ● ●● ●● ●● ● ●●●●●●●●● ● ●●● ●● ● ●●●●●● ● ● ●● ●●●● ●●● ●● ●●●●●●●●● ●●●●●●●● ●●● ●● ●● ●●●● ●● ●● ●● ●●●●● ●●●●● ●● ●● ●●●●● ●● ● ●●● ●●●● ●●● ●● ●● ●●●● ●● ●●● ●●● ●● ●● ●● ● ●●● ●● ●●● ●●●● ● ● ●●●●● ●●● ●●● ●● ● ●● ● ● ●●●●●● ● ●●●● ●●● ●● ● ●● ●●●● ●●●●● ● ●● ●● ●●●● ●● ●●● ●● ●●●●● ●●● ● ●●●●● ● ●●●●● ●● ●●●●●● ●●● ●● ●●● ●● ●● ●●● ●●●●●● ● ●●●●● ●●●● ● ●● ●● ●● ●●●●● ●●●●● ● ●● ●●● ●● ●●●● ●● ●● ● ●● ●●● ●●●●●●● ●● ● ●●●● ●●●●●●●● ●●● ●● ●●● ●●●●● ● ●●● ●●● ●●●● ●●● ●●● ●● ●●● ●●●●● ●● ●●●● ● ● ●● ●●●●●● ● ●●● ●●●● ●●●●● ●●●● ●● ●● ●● ●●● ●●● ●●● ●● ●●●●●●●● ● ●●●● ●● ● ●●●●● ●● ●● ● ●●●●● ●● ● ● ● ●●● ●●● ●●●●●●● ●● ●● ●● ●●● ●● ●●● ●●●● ●●● ●●● ● ●●●●●●● ●● ●●● ●●●● ●● ●● ● ●●●●●●● ● ●●●●●● ●●●●●●●●● ●●●●●●●●●●● ● ● ●● ●● ●● ●●●● ● ●●● ●●●●●● ●●●●●● ●●● ●● ●● ●●●●● ●● ●● ●●●● ●●●● ●● ● ●●● ●● ●●●●●● ●●●● ●●●● ● ●●●●● ●●●● ●●● ●● ●●●● ●● ●● ●●●● ●●● ●●●●● ●●● ●●● ● ●●●●●● ●●●● ●● ●●● ●●●● ●●●●● ●●●●●● ● ●● ●● ●● ●●● ●●● ●●● ●●●● ● ●●● ●●● ●●●●● ●●● ●●●● ●● ●● ● ●●●● ●● ●●● ●●● ●●● ●●● ●● ●●● ●● ●● ●●●●● ●●●● ●●● ●●● ●● ●● ●●● ●● ●●● ● ●●● ●● ● ●●● ●●●● ●●●●●●●● ●● ●●● ●●● ●● ●● ●●● ● ● ●● ●●●●●● ●●● ●●● ●●● ●●●● ●●● ●● ●●●● ●●●●● ●●●●●●● ●●●● ●● ● ●● ●●● ●● ●●● ● ●●● ●● ●●●●●●●●●● ●● ●● ● ●● ●●● ● ●●●●● ●●●●● ●●● ● ●●●● ●●●●●● ●● ●●●● ●● ●● ●●● ● ●●●●●●●●● ●● ●●● ●● ●●●●●●● ●●●●● ●●● ● ●●●● ●●● ●● ●●●●● ● ●● ●●●●●●● ●● ●●●● ●●● ●● ●● ●●● ● ●●●● ●● ●● ●●● ●●● ●● ●● ●● ● ●●●● ●●●●● ●● ●●● ●●●●●● ●●● ●●● ●●● ●●●● ●● ●●●●●● ●●●● ●●● ●●● ●●●● ●●●●● ● ●●●● ● ●●●● ●● ●●●●●● ● ●●● ●●● ●● ●●● ●●●● ● ●●● ●● ● ●●● ●● ●● ●● ●● ●●●●●●● ●●● ●●●● ●● ● ● ●●●● ● ●●● ●● ● ● ●● ●●●●● ●● ● ●●●● ●●● ●●●●●●● ●● ●●●● ●●●● ● ● ● ●● ● ●●●●● ● ●●●● ●● ●●● ●●● ●●● ●● ●● ●●●● ●●●● ●● ● ●● ● ●● ●●●● ●●● ●●● ●● ●●● ●●● ● ●●● ●● ●●●● ● ●●●● ●●● ●●● ●● ●● ●●● ●●● ●●● ●● ● ● ●●●● ●●● ● ●● ●●●●● ● ●● ●● ● ●● ●●● ● ● ●● ●● ●●●● ●●● ● ● ●● ●● ●●●●●●● ●●●● ●● ● ●●●● ●●●●●● ●●●● ●●● ●● ●● ●●● ●● ●●●●●●● ●● ●●●● ● ●●● ●●● ●●●●● ●●● ●●●● ●● ●● ●● ●●● ●● ●●● ●● ●●●● ●●●●●●●● ● ● ●●●●●●● ●● ●●● ● ● ●●●● ● ●●●●● ●● ● ●●● ●● ●● ● ●●● ●●● ●●● ●●● ●●● ●● ● ●● ●● ●●●●●●● ● ● ●● ●● ●● ●●● ●● ●●●● ●●● ● ●●●● ●●● ●●● ● ●●●●● ● ●●● ●●● ●●● ●●● ●●● ●●● ●●●● ●●●●● ● ●●●● ●● ●●●●●●●●● ●●● ●●●● ●●● ●●● ●●●●● ●●●● ●● ●● ●●●● ●● ●● ●●● ● ● ●● ●● ●● ●●●●●●●●●● ●●●● ●● ●●●●● ●●● ●●●●●● ●● ●● ● ●●●●● ●● ●● ●● ●● ●●● ●● ●● ●● ●●●●●● ●● ● ●●●●● ●●●● ●● ●●● ●●●● ● ●● ●● ●● ●●●●● ●●●●● ●●●● ● ●● ● ●● ●● ●●● ●●● ●● ●●●●● ●●●● ●● ●●●●● ●● ●●● ●● ●●●●●● ●●●● ● ●●●●● ●●●●● ● ●● ●●● ●●● ●●●● ●●●● ●●●●●● ● ●●●● ●● ● ●●● ● ●●● ●● ●●●● ●● ●●● ●● ●● ●● ●●●●● ●●●●● ● ●● ●● ●● ●●● ●●●●● ●● ● ●●● ●●●●●●● ●●● ●● ●●●● ●● ●●● ●●● ●● ●●●●●●●● ●● ●● ●●● ● ●● ●●●●● ●● ●●● ●●● ●● ●●● ●●● ●● ●●●● ●●● ●●● ● ●● ●●●●●●● ● ●●●● ●●● ●● ●●● ● ●●●● ●●● ●●● ●● ●●● ●●● ●●● ● ●● ●●●●● ●● ●● ●●● ●●● ●●● ●● ●●●● ●● ●● ●●●● ●● ●●●● ●●● ● ●●● ●●●●●●●●●●●●●●● ●●● ●●●●●● ●●●● ●●● ●● ●●● ●●●● ● ●● ●● ●● ●●● ●●●● ●●●● ● ● ●●●● ●● ●●● ● ●●●●●● ●●●● ●●● ● ●●●●●●● ●●●● ●● ●● ●● ●●● ●●● ● ●●● ●●● ●●● ●●● ●●● ●● ●●● ●● ●● ●● ●●● ●● ● ●● ●●● ●● ●●●●●● ●●●●●●● ● ●●● ●●● ●●● ●●● ●● ● ●●●● ●●●● ●●● ●● ●●● ● ●●●●●●●●● ●●● ●●● ● ●●●● ● ●●●● ●● ●●●●● ●●●● ●●● ●● ●●●● ●●● ●●● ●● ●● ●●●● ●●●●●●● ●● ●● ●● ● ●● ●●●● ●●● ●● ●● ●●●●● ●● ● ●●●●● ● ●●● ●●● ●●●● ●●●●● ●●●● ●●●●●●● ●●●● ● ●●●●● ●●● ● ●●●● ●● ●●● ● ● ●●●●●●● ●● ● ●●●● ●●●● ●●● ●●●● ●● ● ●●●● ●●●● ●● ●● ●●●● ●●●●● ●● ● ● ●●● ●● ●●● ● ●●● ●● ● ● ●●● ●●●●● ●●●●● ●●● ●●● ●●● ●● ●●● ●●● ●●●●● ●●●● ●● ●● ●●● ●● ● ●●● ●●● ●●● ●● ●●● ●● ●●●●●●●●●● ●●● ●●●● ●●●●● ●●● ●●●●● ●● ●●●●● ●●● ●●●●● ● ●●●●●● ●● ●●● ●●●● ●●● ●●● ●●● ● ●●●● ●● ●● ● ●● ●●●●● ●● ● ●●● ●● ● ●● ●●●● ●●●●● ●● ●●●●● ●● ● ●●● ● ●●● ●● ● ●●●●● ●● ●● ● ●●●●● ●● ●● ● ●●● ●● ●● ● ●● ●● ●●● ● ●●● ●●● ●● ●● ●●●● ●●●●● ●●● ● ●●● ●●● ● ●●● ●●●● ●●● ●● ●● ●● ●● ●●● ●● ●●● ●●●●●●●● ● ●●●●●● ●●● ● ●● ●● ● ●●●●● ●●●● ●● ● ●● ●●●●●● ●●● ●●● ●●● ● ●●●● ●● ●● ●●● ●●●●● ●● ●●●● ● ● ●● ●● ●● ●● ●● ● ●●●●● ● ●● ●●●●● ● ●● ● ● ●●●● ●● ●● ●●● ●●●●●●●●●● ●●●● ●●● ● ●● ●●●●●●● ●● ●●●● ●●●● ●●● ●● ●●●●● ●●●● ●●● ●●● ●● ●●●●● ●●●●●●● ●●●●●●●● ●● ● ●● ● ●●● ●●●●●● ●●● ●● ●●● ●●●●● ●● ●●●● ●●●● ●● ●● ●●● ●● ●● ●● ●●● ●●●●●● ●● ●● ●● ●● ●●● ●●● ●● ●● ●●●● ● ●●●●●● ●●●● ●● ●● ●●●●● ●●● ●●●●●●●● ●● ● ●●●● ●●● ●●●●● ●●● ●●● ●● ●●● ● ●● ●●●● ●●●●●● ●●●●●●● ●●● ●● ●● ●●● ● ●● ●● ●●● ●●●●●●●●●●● ●● ●●●● ●●●● ●●● ●● ●● ●●●● ●● ●● ● ●●● ●●● ● ●●● ● ●● ●●●●●●●● ●●●● ● ●● ●●●●●●● ● ●●●●●●●● ●●●● ●● ●●● ● ●●●●● ●●●● ●●●●● ●●●●●● ●●● ●●● ●●●●●●●● ● ●●● ●●●● ●● ●● ●●●●●●● ●●●●● ●●● ●●●● ● ●●● ●●●●●● ●● ●●● ●● ●●●● ●● ● ●●● ●● ●● ●● ●●●● ●●●●●●●● ● ●●●● ●●● ●●● ● ●●● ●● ●● ●●● ●● ●●●●● ● ●●●● ●●● ●●● ●● ●●●● ● ●●● ●●● ●●● ●●●●● ●●● ●●● ●● ●● ●● ●● ●● ● ●● ●● ●●●● ●●● ●● ●●● ●●● ●● ●●●●● ●●●●● ●●● ●●●● ●●● ●●● ●●● ●● ●●● ●● ● ●●●● ●●● ●●● ● ●● ●●●●●● ●● ●●● ●●●●● ●● ●● ●●● ●● ●● ● ●●●●● ●●● ●●● ●●● ●●●●●● ●●● ●●● ●●● ●● ●● ●● ●● ●● ● ●

8

0.0

0.2

0.4

0.6

●●●●●●●●● ●●●●●●● ●●● ●●●●● ●●● ● ●● ● ●●●●●● ●● ●● ●● ●● ●●● ●● ●●●●● ●●●●● ●●●●● ●● ●●●●●●●● ● ●● ●●● ● ●● ●●● ●●●●●● ●●● ●● ●●● ●●●● ●●● ●● ●●●●● ●●●●● ●● ●●●● ●●●●●● ●● ●●●● ●●●●● ●●● ●●●●●● ●●● ●● ●●● ●● ● ●● ●●●●●●● ●● ●●●● ●● ● ●●●● ●●●●● ●● ●●● ●● ●●●● ● ●●● ●●●● ● ●●● ● ●●● ●● ●● ●●● ● ●● ●●●● ●● ● ● ●●●●●●● ●●●●● ●●●●●●●●● ●● ●● ●●● ●●● ●● ●● ●●● ●● ●●●●●●● ●●●● ●●●●● ●●●●● ●●●●●● ●●●●●●● ●● ●●● ● ●●● ●● ●● ●●●●●● ● ● ●● ●●● ●●●● ●●●●●● ●● ●● ● ●●● ●● ●●●● ●●● ●●●●●● ●●● ● ●● ●● ●●●●● ●●● ●●●● ● ●●● ●● ●●●● ●●●● ●● ● ●●●●●●● ● ●●● ●●●● ●● ●● ●●● ●●● ● ●●●●●● ● ●●●●● ●●● ●●● ●● ● ●●●● ● ●●●●● ●● ●● ●●● ● ●●●● ●● ●●● ●●● ● ●● ●● ●● ●●●●●●● ●●● ● ●●●●● ●●●●● ●●● ●●● ● ●●●●●●●●● ● ●●● ●●● ●●●●●●●● ●● ●●●● ●●● ●● ● ● ●●● ●●●● ● ●● ●●● ●●●●●●●●●●● ●●● ●●●●●● ●●● ●●●●● ●●● ●●● ●●● ●●●● ●●● ●●● ● ● ●●●● ●● ● ●●● ●● ● ●●●●● ●● ●●●●●● ●●●●● ● ●● ●●●●● ●● ● ●●●● ●●● ●●●● ● ●●●● ●● ●●●● ●●●●● ●●●●●●● ●●●●● ●●●● ●●● ●●● ● ●●● ●●● ● ●●● ● ●●●●●●●●●● ●●●● ● ●● ●●● ● ●● ●● ●● ● ●● ●●●●●● ●● ●●● ●●●●●●●●●●● ● ●●●●●● ●● ●●●●●●● ●●● ● ●● ● ● ●● ●●●●● ●●●● ●●●● ●● ●●● ●●●● ●● ●● ●●●●● ●●● ●● ● ●●●● ●●●●● ●● ●●●●●●● ●● ●●●● ●●●●● ●● ● ●●● ●● ●●●●● ● ●●●●●●●● ●●● ●● ● ●● ●●●●●● ●● ●●● ●●●●●●● ●● ● ●●●●● ●●● ●●● ●●●●●● ● ●● ● ●●●● ●● ● ●●●●●● ●● ●●●●●● ●●● ●● ●●●●●●● ●●● ●●●●●●● ●●● ●●●●● ●●● ●●●● ●● ●● ● ●●●● ●●●●● ●●● ● ●● ● ● ●● ●●●●●●● ● ●●●● ●●● ●●●●● ●●●● ●● ●●● ●●● ●●●●●● ●● ●●●● ●●● ●● ●● ●●●● ● ●●●●● ● ● ●●● ●●● ●●● ●● ●● ● ●●● ●●●● ●●● ● ●●●● ● ●● ●●●● ● ●●● ●● ●●● ●●● ●●● ●● ●●●●● ●● ● ●●●● ● ●●●●● ●● ● ●●● ●●●● ●● ●●● ●●● ●●●●● ●●● ●●●● ●●● ● ●●●●● ●● ● ●●●● ● ●● ●●● ●●●●● ●●● ●●● ●●● ● ●●●●● ●●●● ●● ●●● ●● ●●●● ●●●●●● ●●● ●● ●● ●●● ●●●●●● ●●● ●●●●● ●● ●●● ●●● ●● ●●● ● ●●● ●● ●● ●● ●●●●●● ●●●● ●●● ●● ●●●●●● ●●● ●●● ●●●● ●●●●●●● ●● ● ●● ●●● ●●●● ● ●● ●●● ●● ●●●● ● ●●●● ● ●● ●● ●●●● ●● ●●● ● ●●●● ●● ●●●●●● ●● ● ●● ●●●● ●● ●● ● ●●●●●● ●●●●● ●● ●●● ●●●●● ●●●●● ●●●●●● ●●●●● ●● ●●●●●● ●●●● ●●● ●●●● ●● ●●● ●●●●●●● ● ●●●● ●● ●●●●●●●●● ●●●● ●●● ●●● ● ●●●●● ●● ● ●● ●●● ●● ●● ● ●●● ●●● ●●●●● ● ●●●●●●●●●● ● ●● ●●● ●●●●● ●●●● ●● ●● ●●●● ●●● ●● ●●●●● ● ●●●●●●●●● ●● ●●● ●●●●●●●●● ●● ●●●● ●● ●● ●●● ●●●● ●●● ●●● ●●●●● ●●● ●●● ●● ●● ●● ●● ●●●● ●●● ●●● ●●●●●●●●●●● ●● ●●● ●●●● ● ●●● ●● ●●●● ●●● ● ●● ●● ●●●● ●●●●●●●● ●●●●●● ●●● ●●●● ● ●● ● ●●● ● ●●● ●●● ●●● ●●●●● ●●●●● ●●●●●●●● ● ●●● ●●● ●● ●●●● ● ●● ●● ●● ●●●●● ●●●●● ●● ●●●●● ●●●● ● ●●● ●● ●●●● ● ●●●● ●● ●●●●●●● ●●● ●●●●●● ●●● ●●●●●●● ●●● ●● ●●●● ●●● ●●●●● ●●●●●● ●●●●●● ●●●● ●●●● ●● ●●●● ●●●● ●● ●●●● ●●●●●● ●●●● ●● ●●●●●● ●●●● ●●●●●●● ● ●● ●●●●● ●●●● ●● ●● ●●●● ●● ●●● ●●●●● ● ●●●●● ●● ●●●●●● ●●● ●●● ●● ● ●● ●●●●●●● ●● ● ●●● ● ●●●● ●●● ● ●●●●●● ●●●● ●● ●●●●●● ●●● ●●●● ●●●●●●●●●● ●●●●●●● ●●●● ●●● ●●●● ● ● ●●● ●●● ●●●●●● ●●●●●● ●●● ●●● ●●● ●●● ●●● ● ●● ●● ● ●● ●●●●● ●●●● ●● ●●●● ●●●●●● ●●● ●● ● ●●● ●● ●●● ●● ●● ● ●● ● ●● ●●●● ●●● ● ●●●● ●● ●● ● ●● ● ●●●● ●● ●● ●● ●●● ●● ●●● ●● ●●● ●●●● ● ●● ●● ●●● ●● ● ●● ●●● ●● ●●● ●● ●●●● ●● ●●● ● ●● ●● ● ●● ●●● ●●● ● ●●●●●●●●●● ●●● ●● ●●●● ●●●● ●●● ●●●●●●● ●●●●●●●●●● ● ● ●● ●● ● ●● ●● ●● ●●●●● ●● ●●● ●●● ●● ●● ●● ●● ●● ●● ●●●● ●●●●● ●● ●●●● ●●●●●● ●●●●●●● ●●● ●●●●● ●●● ●●● ●●● ●●●● ●●●● ●●● ●●●● ● ● ●● ●●● ●●●● ●● ●●● ●●● ●●● ●●● ●● ●● ● ●●● ●● ●●●● ●●●● ●● ●●●● ● ●● ●● ●● ●●● ● ● ●●●● ●● ●●● ●●●● ●● ●●● ● ●●●● ●●● ●●●●●●●●●●● ●● ●●●●●● ●● ●●● ●●●● ●●● ●●●●●● ●●● ● ●●●● ● ●●● ●●●●●●●●●●●● ●●●●● ● ●● ●● ●●● ●● ●●●● ●● ●●● ●●●●●●●●●●● ●● ●● ●●● ●●● ●●● ●●● ● ●●●● ●● ● ●●●● ●● ●● ●●● ●●● ●●●● ● ●●●● ●●●● ●● ●●●●● ● ●●●●● ●● ●●● ●●● ●●●●● ●● ●● ●●● ●●● ● ●●● ● ● ●●●●●● ●●● ●●● ●●● ● ●●●●●● ●●● ●● ●●●● ●●●●●●●●●● ●●●● ●●● ●●●● ●● ●● ●●● ●● ●●●● ●●●●● ●●●●●●● ●● ●●● ● ●● ●●● ● ●●● ●● ●● ●● ●● ●●●●●●● ●●●● ●●●●● ●●●●● ● ●●●● ●●● ●● ●●●●●●● ● ●● ●● ●●●● ● ● ●●● ●● ●● ●●●● ●●●●● ●●● ●●● ● ●●●●●●● ●● ●●●● ●●●● ● ●●● ●●●●●●● ●● ●●●●● ●● ● ●● ●● ●● ●●●● ●●●●● ●● ●●●●● ●●● ●● ● ●●●● ●●●● ● ●●●●●●●●● ●●● ●●● ●●●●●● ●● ●●● ●● ●●●●● ●●● ●● ●● ●● ●●● ●● ●● ● ●●● ●●●● ●●● ●● ● ●●●●●● ●●● ●● ●●● ●●●● ●●● ●● ●●●● ●●● ●●● ●●●●● ●●●●●●● ●●●●● ●● ●●● ● ●●●●●●●●● ●●●●●● ●●● ●●●● ●●● ●● ●●●● ●● ●● ●●● ●● ● ●● ●●●●●●●● ●●●●●● ●● ●●●●● ●● ●●●● ●● ●● ●●● ●●● ●●●● ●●● ● ●●● ●●● ●●● ●● ●●●● ●● ●●●●●● ● ●●● ●●● ● ●●●●● ●● ●●● ●●●●●● ● ●● ●●● ●●●● ●● ● ● ●●●● ●● ●●●●● ●● ●●● ●●● ●●●● ●●●●●●●● ●●● ● ●● ●●●●●● ●●● ●● ●●● ● ●●●● ●●●● ●●●● ●● ●● ●●● ●●●● ●●● ●●●● ●●● ●● ●●● ●●●● ●●●●● ●●●●● ●● ●●● ● ● ●● ●●●●● ●●●●●●●●● ●●●● ●●●●● ●●●● ●●● ●●● ●●●●●● ●● ●●● ●●●● ●●●●● ● ●●●●● ●●●● ●●●● ●● ●●●●● ●● ●●● ●●● ●● ●● ●● ● ●●●●● ●●●● ●●● ●●● ●● ●●● ●● ●●●●●● ●● ●●●●● ● ●● ●● ●●● ●●● ●●● ●●● ●●●● ●● ●● ●●● ●●●●● ●●●● ●●● ●● ●●●●●●●●●●●● ●●●● ●●●●● ●●● ●●● ●● ●●●●●●●●● ●●● ●●●●● ●●●●●●●● ●●●●●● ●●● ●● ●● ● ●●●● ●●● ●● ●●●● ●●●●● ●●● ●● ●● ●●● ●●● ● ●● ●● ● ●● ●● ● ●●●●●● ● ●●●● ●●●●● ●● ●●●● ●● ●●●● ● ●●●●● ● ●● ●●●● ●●●●●● ●●●●● ●● ●● ●●● ●● ●● ● ●●● ●● ●● ●●●● ●●● ●● ● ● ●●●●● ●● ● ●● ●●●●● ● ●● ●●●● ●●●● ● ●●●●● ●● ● ●● ●●● ● ●●●●●●●● ●●● ● ●● ● ●●●● ●●● ●●● ●● ●● ● ●●●●●● ●● ●●● ●●● ●● ● ●●● ●●● ●●● ●● ● ● ●● ● ●● ●●● ●●● ●●●●●●● ●●●●●● ●● ●● ●● ●●●● ●● ●●●●●● ●●● ●● ●●●●●● ●●● ●● ●●●●●●●● ●●●● ●● ●●●●●● ●●●● ●●●●●● ●●●● ●●●● ●●●● ●● ●●● ● ●●● ●●●●●● ●●● ●●● ●●● ●●●● ●●● ●●● ●●● ●● ●●● ●●●● ●●●●●●●● ●●●●●● ●●●● ● ● ●● ● ●●●● ●●● ●●● ●●● ●● ●● ● ●●●● ●● ●●● ● ●●●●● ●●●●●● ●● ●● ●● ●●●●● ● ●● ●● ●●●●● ●●●● ●●● ●●●●●●●●● ●●●●●●●●● ●● ●●●●●●●● ●●● ●●● ●●●●●● ●● ●● ●● ●● ●● ●●●●● ●●●●●●●●●●● ●●●●●●●●● ●● ●●●●●●●●● ● ●●●●● ●●●● ●● ●● ●●● ●●●● ●●●●●● ●●● ●● ●● ●●●●● ●●● ●●●●●●● ●●● ●● ●●● ●●●●●● ●● ●●● ●● ●●●●● ●●●●● ●●●●● ●●●● ●●● ●●●● ●● ●● ●●●●● ●●● ●●●●●● ●●● ● ● ●● ●●● ●● ●●● ●●●● ●●●●●●● ●● ●●●● ●●● ●●● ●●●● ●● ●●● ●● ●●●●●●● ●●● ●● ●● ● ●●●●● ●● ●●●● ●●● ● ●●● ● ●●● ●● ●●●● ●●● ●●● ●●● ●●●● ●● ●●●● ●● ●●●●●●●●●●● ● ●●● ● ●●● ● ●●● ●●●● ●●●● ●●●●● ●● ●●●●●●● ● ● ●●●●● ●●●●● ●●● ●● ●● ●● ●●● ●●● ● ●●● ●●●●●●● ●●●● ●● ●● ●● ●●● ●●●● ●● ●●● ●●● ●● ●●● ●● ●● ●●● ●● ●● ● ●●● ● ●● ●●●●● ●●●●● ●●●● ●●●● ● ●● ● ●● ●●● ● ●●● ● ●● ●●●● ●●●● ●● ●●● ●●●●●● ●●● ●● ●●●●● ●● ●● ●● ● ●● ●● ●●● ●● ●●● ●●●● ●●● ● ●● ●●●●● ●●●● ●● ●● ●●● ●● ●● ●●●●●●●●●● ● ●●●●● ●●● ●●●●●●●● ●● ● ●●●● ●●●●●●● ● ●● ●●●● ●● ● ●●● ●●●● ●●● ●●● ●●● ●●●●● ●●●● ●●●●●● ● ●●●●●● ●● ● ●●●●●●●●●● ●● ●●● ●●● ● ●● ●●●● ●●● ●● ●●●●● ● ●● ●●●●● ●●● ●●●●●●● ●● ●● ●●●● ●●● ●● ● ●●●●● ●●●● ●●●● ●● ● ●●●●● ●● ●● ●● ●●● ●●●●●●● ● ●●●● ●●●● ●● ●●● ●●●●●●● ●●●● ●● ●●● ●●● ●● ●●●● ●●●● ●●●● ●●● ●●●●●● ●● ● ● ●●●●● ● ●●●●●●● ● ●●● ●● ●● ●● ●●● ●●● ● ●●●●●●● ● ●● ●● ●● ●●● ●● ●● ●●●● ●●● ●● ●●● ● ●● ●●●●● ●●●●●● ●●● ●●●●● ●● ●●● ●●●● ● ●●●● ●●● ●●●● ●●●●●● ●●● ● ●●●● ●●● ●● ●●●● ●●●●●●●●● ●●●●●● ●●●● ●●● ● ●●● ●● ●●●● ●●● ●●●●● ●● ●● ●● ●●● ●●●●● ●●●●●● ●● ●●● ●● ● ●●● ●●●● ●●●●●● ●●●●●● ●●●● ● ●●●● ● ●● ●● ●●● ●●● ●● ● ●●● ● ●●●● ●●● ●●● ●●●● ●●●● ●● ●●● ●●●●● ●●● ●● ● ●● ●● ●●● ●●●● ●●●●●● ●● ●●● ●●●●● ●● ●●● ●●● ●● ●●● ● ●● ●●● ●● ● ●●●● ●●● ● ● ●● ●● ●●●●●●●●●●● ● ●● ●●●●●●● ●●●●●● ●● ●●● ●●● ●●●●● ●● ●● ●●● ●●●●● ●●●●●●●●● ●●● ●● ●● ● ●● ●●● ●● ●● ●● ●●●●●● ● ●●●●●●● ●●● ●●●● ●●● ●●● ●●●●● ●● ●●●●●●● ●●● ●●●●●●●● ●●●●● ●●●●●●●●● ● ●●● ●● ●●● ●●●●● ●●● ● ●●●● ●●● ●●●●●●● ● ●● ●●● ●●●●● ●● ●● ●●●●● ●● ●●●●● ●● ●● ●●●● ●●●● ● ●●●●● ●● ●●●● ●●● ●●●●●● ●● ●●● ●●● ●●●● ●●●●●● ●● ●● ●●● ●●●●● ●●●●● ●●● ● ●● ●● ●●● ●●● ● ●●● ●● ● ●●● ●●●●● ●● ●●●● ● ●● ●● ●●● ●●● ●●●●● ●●●● ●●●●●● ●●●● ● ●●● ●●● ●●●●● ●●●● ●● ●● ●●● ●●●●● ●● ●● ●●●● ●●●●●●● ●●● ●● ●● ●● ● ●●●●● ●●●● ●● ●● ●●● ●● ●● ●●●● ●● ●●● ●● ●●●● ●● ●● ●●● ●●●● ●●●●●●●●● ● ●●●● ● ●● ●●● ●● ●●●● ●● ●● ●● ●●● ●●● ●●●● ●●●●● ●● ●●●●●● ●● ●● ●●●● ●●●●● ●● ●●●●●●●● ●●● ●● ● ●● ●● ●●● ● ● ●●● ●●● ●●● ●● ●● ● ●● ●●●●● ●● ●● ●● ●●●●●●● ●●●● ●● ●●● ●●●● ● ● ●●● ●●●● ● ●●● ●● ●●● ●● ●●● ●●●●●●●● ●● ● ●●●● ●●● ●●● ● ● ●●● ●●●● ●● ●●● ●●●●●● ● ●●●●●●●● ●● ●●● ●● ●●●●●●● ●● ● ●●● ●●●● ●●●● ●● ●● ●●●● ●● ●● ●● ● ●●● ●●●● ●●● ●● ●●●●● ●● ●●●●● ●●● ●●● ●●● ●●●● ●●●●● ●● ●● ●● ●●●●● ●●●● ●●●●● ●●●● ●●● ●● ● ●●● ● ●●●●●●●●● ●●● ● ●●●● ● ●●●● ● ●●●● ● ●● ●●● ●● ●● ●●● ●●●● ● ●● ●●●●●●●● ●● ●●● ●●●● ●●●● ●●● ●● ●● ●●● ●● ●●●●●● ●●●● ●● ● ● ●● ●●●●● ●● ●●● ●●● ●●● ● ● ●● ●●●● ●●● ●●● ●● ●● ●● ●●●●● ●● ●●●●● ●●●● ●● ● ● ●●●●●●●● ●●● ●●● ●● ●●● ●●●●●●●●●● ●●●●●●●●●● ● ●●● ●●●●●●● ●●● ●●●● ●● ● ●●●●● ●●●● ●● ●● ●●●●● ●●●●●●●●●●●● ●● ● ●●● ●● ●●●● ●●●●●●● ●● ●●●● ● ●●● ●●●●●● ●●● ●● ●● ● ●●● ●●●●● ●●● ●● ●●● ●●●●● ●●●● ●●●●●●●●●● ●●● ●● ●● ●● ●●●●●●● ●● ●●● ●● ●●● ●●● ●●●● ●●●● ● ●●● ● ●●●● ●●● ●●●● ●● ●●●●●●●●● ● ●●● ●● ●● ●● ●●● ●●●●●● ●● ●●●●● ● ●● ●●●● ●●● ●● ●●●●●●● ●● ●●● ●●●●●● ●● ●●●●● ● ●●●●●●●● ●● ●●●● ●● ●●● ●●● ●●● ●●● ● ●● ●●● ●●●●● ●● ●●● ●●●●●●●●●● ●● ●● ●● ●●●● ●● ●● ●● ● ●●● ●●●●●●●●●●● ●● ●● ● ●●●●●●●●● ●●● ●●●● ● ●● ●●●●●● ●●● ●●●● ●●●●● ●●●●●●●●● ●● ●●●● ●● ●●● ●●●● ●● ●● ●● ● ●● ●●● ●● ●●● ●● ●● ●●●●● ●● ● ●● ●● ●●● ●●●●●●● ●●●● ●●●● ●●● ●● ●●● ●●●●●● ●● ●● ●●● ●● ●●● ●● ●● ●●●● ●●● ● ●● ●●●●● ● ●●●●● ●●●●● ●●●● ● ●●●● ● ●● ●● ●●● ●●●●● ●● ● ●●●●● ●●●● ●●●●●●● ●● ●● ●●● ●●●●● ●● ●●●●●● ●● ●●● ●● ●● ●●●● ●●●●● ●● ●●●● ●● ●● ●● ●●●●●

10

Page 13: Visualizing multivariate data using lattice and direct labels

Hide the actual points with the plot.points argument

> densityplot(~gcsescore | factor(score),

+ Chem97, plot.points = FALSE)

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0.0

0.2

0.4

0.6

10

Page 14: Visualizing multivariate data using lattice and direct labels

Conditioned and grouped density plots

> densityplot(~gcsescore | factor(score),

+ Chem97, plot.points = FALSE, groups = gender)

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0.8

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0.0

0.2

0.4

0.6

0.8

10

Page 15: Visualizing multivariate data using lattice and direct labels

Add a legend with the auto.key argument

> densityplot(~gcsescore | factor(score),

+ Chem97, plot.points = FALSE, groups = gender,

+ auto.key = list())

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0.8

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0.0

0.2

0.4

0.6

0.8

10

MF

Page 16: Visualizing multivariate data using lattice and direct labels

Legend layout with the columns argument

> densityplot(~gcsescore | factor(score),

+ Chem97, plot.points = FALSE, groups = gender,

+ auto.key = list(columns = 2))

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0.8

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0.0

0.2

0.4

0.6

0.8

10

M F

Page 17: Visualizing multivariate data using lattice and direct labels

Legend positioning with the space argument

> densityplot(~gcsescore | factor(score),

+ Chem97, plot.points = FALSE, groups = gender,

+ auto.key = list(columns = 2, space = "bottom"))

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0.8

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0.0

0.2

0.4

0.6

0.8

10

M F

Page 18: Visualizing multivariate data using lattice and direct labels

Show all default settings

> show.settings()

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

superpose.symbol superpose.line strip.background strip.shingle

dot.[symbol, line]

box.[dot, rectangle, umbrella]

Hello

World

add.[line, text] reference.line

●●●

●●●

●●●

plot.[symbol, line] plot.shingle[plot.polygon] histogram[plot.polygon] barchart[plot.polygon]

superpose.polygon regions

Page 19: Visualizing multivariate data using lattice and direct labels

Show settings good for printout

> show.settings(standard.theme(color = FALSE))

● ● ● ● ● ● ●

● ● ● ● ● ● ●

superpose.symbol superpose.line strip.background strip.shingle

dot.[symbol, line]

box.[dot, rectangle, umbrella]

Hello

World

add.[line, text] reference.line

●●●

●●●

●●●

plot.[symbol, line] plot.shingle[plot.polygon] histogram[plot.polygon] barchart[plot.polygon]

superpose.polygon regions

Page 20: Visualizing multivariate data using lattice and direct labels

Change the settings

> br <- simpleTheme(col = c("black", "red"))

> show.settings(br)

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ●

superpose.symbol superpose.line strip.background strip.shingle

dot.[symbol, line]

box.[dot, rectangle, umbrella]

Hello

World

add.[line, text] reference.line

●●●

●●●

●●●

plot.[symbol, line] plot.shingle[plot.polygon] histogram[plot.polygon] barchart[plot.polygon]

superpose.polygon regions

Page 21: Visualizing multivariate data using lattice and direct labels

Change group colors with par.settings

> densityplot(~gcsescore | factor(score),

+ Chem97, plot.points = FALSE, groups = gender,

+ auto.key = list(columns = 2, space = "bottom"),

+ par.settings = br)

gcsescore

Den

sity

0.0

0.2

0.4

0.6

0.8

0 2 4 6 8

0 2

0 2 4 6 8

4

6

0 2 4 6 8

8

0.0

0.2

0.4

0.6

0.8

10

M F

Page 22: Visualizing multivariate data using lattice and direct labels

Load a tabular data set

> print(VADeaths)

Rural Male Rural Female Urban Male Urban Female

50-54 11.7 8.7 15.4 8.4

55-59 18.1 11.7 24.3 13.6

60-64 26.9 20.3 37.0 19.3

65-69 41.0 30.9 54.6 35.1

70-74 66.0 54.3 71.1 50.0

Page 23: Visualizing multivariate data using lattice and direct labels

Convert to data frame to work with lattice

> vad <- as.data.frame.table(VADeaths)

> names(vad) <- c("age", "demographic", "deaths")

> head(vad)

age demographic deaths

1 50-54 Rural Male 11.7

2 55-59 Rural Male 18.1

3 60-64 Rural Male 26.9

4 65-69 Rural Male 41.0

5 70-74 Rural Male 66.0

6 50-54 Rural Female 8.7

Page 24: Visualizing multivariate data using lattice and direct labels

Grouped dotplots work well for these data

> dotplot(age ~ deaths, vad, groups = demographic,

+ type = "o")

deaths

50−54

55−59

60−64

65−69

70−74

20 40 60

Page 25: Visualizing multivariate data using lattice and direct labels

Plots can be saved as R objects

> dots <- dotplot(age ~ deaths, vad, groups = demographic,

+ type = "o")

> dots

deaths

50−54

55−59

60−64

65−69

70−74

20 40 60

Page 26: Visualizing multivariate data using lattice and direct labels

Saved plots can be updated later

> dots2 <- update(dots, type = "l", xlim = c(5,

+ 80))

> dots2

deaths

50−54

55−59

60−64

65−69

70−74

20 40 60

Page 27: Visualizing multivariate data using lattice and direct labels

Add a confusing legend ... how can we label more intuitively?

> update(dots2, auto.key = list(points = FALSE,

+ lines = TRUE))

deaths

50−54

55−59

60−64

65−69

70−74

20 40 60

Rural MaleRural FemaleUrban MaleUrban Female

Page 28: Visualizing multivariate data using lattice and direct labels

Load some earthquake measurements

> data(Earthquake, package = "nlme")

> head(Earthquake)

Quake Richter distance soil accel

132 20 5 7.5 1 0.264

133 20 5 8.8 1 0.263

134 20 5 8.9 1 0.230

135 20 5 9.4 1 0.147

136 20 5 9.7 1 0.286

137 20 5 9.7 1 0.157

Page 29: Visualizing multivariate data using lattice and direct labels

Scatterplot with xyplot

> xyplot(accel ~ distance, Earthquake)

distance

acce

l

0.0

0.2

0.4

0.6

0.8

0 100 200 300

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●

● ●

●●

●●

●●●

●●

● ● ●

●●

●●

●●

● ● ●

●●

●●

●●●●

●●

●●

● ●

● ● ● ● ●

●●

● ●

●●

●●● ● ●●

●●

● ● ● ● ●

●●

● ●

Page 30: Visualizing multivariate data using lattice and direct labels

Log scales with scales argument

> xyplot(accel ~ distance, Earthquake,

+ scales = list(log = TRUE))

distance

acce

l

10^−2.5

10^−2.0

10^−1.5

10^−1.0

10^−0.5

10^0.0

10^0.0 10^0.5 10^1.0 10^1.5 10^2.0 10^2.5

● ●●

● ●

●●

●●

●●

●●

●●

●●

●●

● ●

● ● ●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●

●●

● ●●●

●●

●●

●●

● ●

●●●

●●

●●

●●

● ●

Page 31: Visualizing multivariate data using lattice and direct labels

Type ”p” is the default

> xyplot(accel ~ distance, Earthquake,

+ scales = list(log = TRUE), type = c("p"))

distance

acce

l

10^−2.5

10^−2.0

10^−1.5

10^−1.0

10^−0.5

10^0.0

10^0.0 10^0.5 10^1.0 10^1.5 10^2.0 10^2.5

● ●●

● ●

●●

●●

●●

●●

●●

●●

●●

● ●

● ● ●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●

●●

● ●●●

●●

●●

●●

● ●

●●●

●●

●●

●●

● ●

Page 32: Visualizing multivariate data using lattice and direct labels

Type ”g” adds a grid

> xyplot(accel ~ distance, Earthquake,

+ scales = list(log = TRUE), type = c("p",

+ "g"))

distance

acce

l

10^−2.5

10^−2.0

10^−1.5

10^−1.0

10^−0.5

10^0.0

10^0.0 10^0.5 10^1.0 10^1.5 10^2.0 10^2.5

● ●●

● ●

●●

●●

●●

●●

●●

●●

●●

● ●

● ● ●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●

●●

● ●●●

●●

●●

●●

● ●

●●●

●●

●●

●●

● ●

Page 33: Visualizing multivariate data using lattice and direct labels

Type ”smooth” adds a smooth line

> xyplot(accel ~ distance, Earthquake,

+ scales = list(log = TRUE), type = c("p",

+ "g", "smooth"))

distance

acce

l

10^−2.5

10^−2.0

10^−1.5

10^−1.0

10^−0.5

10^0.0

10^0.0 10^0.5 10^1.0 10^1.5 10^2.0 10^2.5

● ●●

● ●

●●

●●

●●

●●

●●

●●

●●

● ●

● ● ●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●

●●

● ●●●

●●

●●

●●

● ●

●●●

●●

●●

●●

● ●

Page 34: Visualizing multivariate data using lattice and direct labels

Add some labels> xyplot(accel ~ distance, Earthquake,

+ scales = list(log = TRUE), type = c("p",

+ "g", "smooth"), sub = "(log scale)",

+ xlab = "Distance from epicenter (km)",

+ ylab = "Maximum horizontal acceleration (g)",

+ main = "Larger quakes are felt closer to the epicenter")

Larger quakes are felt closer to the epicenter

(log scale)

Distance from epicenter (km)

Max

imum

hor

izon

tal a

ccel

erat

ion

(g)

10^−2.5

10^−2.0

10^−1.5

10^−1.0

10^−0.5

10^0.0

10^0.0 10^0.5 10^1.0 10^1.5 10^2.0 10^2.5

● ●●

● ●

●●

●●

●●

●●

●●

●●●

●●

● ●

● ● ●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●

●●

● ●●●

●●

●●

●●

● ●

●●●

●●

●●

●●

● ●

Page 35: Visualizing multivariate data using lattice and direct labels

Volcano elevation data in matrix form

> dim(volcano)

[1] 87 61

> print(volcano[1:5, 1:5])

[,1] [,2] [,3] [,4] [,5]

[1,] 100 100 101 101 101

[2,] 101 101 102 102 102

[3,] 102 102 103 103 103

[4,] 103 103 104 104 104

[5,] 104 104 105 105 105

Page 36: Visualizing multivariate data using lattice and direct labels

Plot volcano elevations in a matrix using color

> levelplot(volcano)

row

colu

mn

10

20

30

40

50

60

20 40 60 80

100

120

140

160

180

200

Page 37: Visualizing multivariate data using lattice and direct labels

Use a different color scale

> my.colors <- sapply(0:100, function(l) hcl(l = l))

> levelplot(volcano, col.regions = my.colors)

row

colu

mn

10

20

30

40

50

60

20 40 60 80

100

120

140

160

180

200

Page 38: Visualizing multivariate data using lattice and direct labels

Use 3d wireframe plots

> wireframe(volcano, drape = TRUE, col.regions = my.colors)

rowcolumn

volcano

100

120

140

160

180

200

Page 39: Visualizing multivariate data using lattice and direct labels

Combine plots using latticeExtra

> library(latticeExtra)

> both <- c(wireframe(volcano, drape = TRUE),

+ levelplot(volcano))

> both

rowcolumn

volcano

100

120

140

160

180

200

Page 40: Visualizing multivariate data using lattice and direct labels

Globally change the plot parameters

> trellis.par.set(regions = list(col = my.colors))

> both

rowcolumn

volcano

100

120

140

160

180

200

Page 41: Visualizing multivariate data using lattice and direct labels

Longitudinal data

> data(BodyWeight, package = "nlme")

> head(BodyWeight)

weight Time Rat Diet

1 240 1 1 1

2 250 8 1 1

3 255 15 1 1

4 260 22 1 1

5 262 29 1 1

6 258 36 1 1

Page 42: Visualizing multivariate data using lattice and direct labels

Conditional scatterplots reveal difference between treatments

> xyplot(weight ~ Time | Diet, BodyWeight,

+ groups = Rat, type = "l", layout = c(3,

+ 1))

Time

wei

ght

300

400

500

600

0 20 40 60

1

0 20 40 60

2

0 20 40 60

3

Page 43: Visualizing multivariate data using lattice and direct labels

Legends with more than a few items are very confusing

> xyplot(weight ~ Time | Diet, BodyWeight,

+ groups = Rat, type = "l", layout = c(3,

+ 1), auto.key = list(space = "right",

+ points = FALSE, lines = TRUE))

Time

wei

ght

300

400

500

600

0 20 40 60

1

0 20 40 60

2

0 20 40 60

3

23418567119101213151416

Page 44: Visualizing multivariate data using lattice and direct labels

Outline

The lattice system

Adding direct labels using the latticedl package

Page 45: Visualizing multivariate data using lattice and direct labels

Why use direct labels instead of legends?

I Edward Tufte, professor emeritus of statistics at Yale.

I The Visual Display of Quantitative Information (1983).

I One of his points: legends make it harder to decode a statistical graphic.

I Use direct labels whenever possible.

Page 46: Visualizing multivariate data using lattice and direct labels

How to plot direct labels in R?

I Lattice + latticedl: direct.label(xyplot(y∼x,data,groups=z),method=f)I Positions of direct labels can be specified as a function of the data:

f <- function(d,...){

# d is a data frame with columns x,y,groups of the data points

#... analyze the points and return the label positions:

return(data.frame(x=a,y=b,groups=c))

}

groups x y hjust vjust rot

1 Rural Male 66.0 5 0 0.5 30

2 Rural Female 54.3 5 0 0.5 30

3 Urban Male 71.1 5 0 0.5 30

4 Urban Female 50.0 5 0 0.5 30

deaths

age

2

3

4

5

20 40 60 80

Rural Male

Rural Female

Urban Male

Urban Female

I latticedl does the labeling for you, keeping track of the correct colors.I Common plot types have default direct labeling methods.

Page 47: Visualizing multivariate data using lattice and direct labels

Easy fix for confusing legend: direct labels

> library(latticedl)

> long <- xyplot(weight ~ Time | Diet, BodyWeight,

+ groups = Rat, type = "l", layout = c(3,

+ 1))

> direct.label(long)

Time

wei

ght

300

400

500

600

0 20 40 60

23418567

1

0 20 40 60

11

910

12

2

0 20 40 60

13

151416

3

Page 48: Visualizing multivariate data using lattice and direct labels

Even works in black and white

> longbw <- update(long, par.settings = standard.theme(color = FALSE))

> direct.label(longbw)

Time

wei

ght

300

400

500

600

0 20 40 60

23418567

1

0 20 40 60

11

910

12

2

0 20 40 60

13

151416

3

Page 49: Visualizing multivariate data using lattice and direct labels

Change label positions with the method argument

> direct.label(long, method = last.points)

Time

wei

ght

300

400

500

600

0 20 40 60

23418567

1

0 20 40 60

11910

12

2

0 20 40 60

13151416

3

Page 50: Visualizing multivariate data using lattice and direct labels

Make your own positioning function using dl.indep

> direct.label(long, method = dl.indep(d[which.max(d$x),

+ ]))

Time

wei

ght

300

400

500

600

0 20 40 60

23418567

1

0 20 40 60

11910

12

2

0 20 40 60

13151416

3

Page 51: Visualizing multivariate data using lattice and direct labels

You can change text parameters (same as grid::grid.text)

> direct.label(dots2, method = list("last.points",

+ rot = 30))

deaths

50−54

55−59

60−64

65−69

70−74

20 40 60

Rural Male

Rural Female

Urban Male

Urban Female

Page 52: Visualizing multivariate data using lattice and direct labels

Load some data on car fuel efficiency

> data(mpg, package = "ggplot2")

> head(mpg)

manufacturer model displ year cyl trans drv cty

1 audi a4 1.8 1999 4 auto(l5) f 18

2 audi a4 1.8 1999 4 manual(m5) f 21

3 audi a4 2.0 2008 4 manual(m6) f 20

4 audi a4 2.0 2008 4 auto(av) f 21

5 audi a4 2.8 1999 6 auto(l5) f 16

6 audi a4 2.8 1999 6 manual(m5) f 18

hwy fl class

1 29 p compact

2 29 p compact

3 31 p compact

4 30 p compact

5 26 p compact

6 26 p compact

Page 53: Visualizing multivariate data using lattice and direct labels

Plot city versus highway fuel efficiency

> xyplot(cty ~ hwy, mpg, aspect = 1)

hwy

cty

10

15

20

25

30

35

20 30 40

● ●●

●●

●●

●●

● ●

● ●

●●

●●

●●

●●

● ●●

●●

●●

●●

● ●

● ●●

●●●

●●

●● ●

●●

● ● ●●

● ●

● ●

●●

●● ●

●●

●●

● ●

● ●

●●

● ●●

●●●

● ●

●●

●●

●●

●●●

● ●

●●

●● ●●

●●

● ● ●

●● ●

● ●

● ●●

●●●

● ●

Page 54: Visualizing multivariate data using lattice and direct labels

Add a reference line x=y

> panel.xyref <- function(...) {

+ panel.xyplot(...)

+ panel.abline(0, 1)

+ }

> xyplot(cty ~ hwy, mpg, aspect = 1, panel = panel.xyref)

hwy

cty

10

15

20

25

30

35

20 30 40

● ●●

●●

●●

●●

● ●

● ●

●●

●●

●●

●●

● ●●

●●

●●

●●

● ●

● ●●

●●●

●●

●● ●

●●

● ● ●●

● ●

● ●

●●

●● ●

●●

●●

● ●

● ●

●●

● ●●

●●●

● ●

●●

●●

●●

●●●

● ●

●●

●● ●●

●●

● ● ●

●● ●

● ●

● ●●

●●●

● ●

Page 55: Visualizing multivariate data using lattice and direct labels

Jitter the data to see all the points

> xyplot(jitter(cty) ~ jitter(hwy), mpg,

+ aspect = 1, panel = panel.xyref)

jitter(hwy)

jitte

r(ct

y)

10

15

20

25

30

35

20 30 40

● ●●

●●

●●

●●

● ●

● ●

●●

●●

●●

●●

●●●

●●

●●

●●

● ●

● ●●

●●●

●●

●● ●

●●

● ● ●●

● ●

● ●

●●

●● ●

●●

●●

● ●

● ●

●●

● ●●

●●●

● ●

●●

●●

●●

●●●

● ●

●●

●● ●●

●●

● ● ●

●● ●

● ●

● ●●

●●●

● ●

Page 56: Visualizing multivariate data using lattice and direct labels

Group data by number of cylinders in the engine

> direct.label(xyplot(jitter(cty) ~ jitter(hwy),

+ mpg, aspect = 1, panel = panel.xyref,

+ groups = factor(cyl)))

jitter(hwy)

jitte

r(ct

y)

10

15

20

25

30

35

20 30 40

●●

●●

● ●

● ●

●●

●●

●●

●●●

● ●

●● ●●● ● ●

● ●

●●●

● ●

● ●

●●

●●

● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●● ●

● ●●

●●

●●

● ●

● ●●

●●

●●

● ●

● ●●

●●●● ●

● ● ●●

●●

●●

● ●

●●

● ●●

●●

4

56

8

Page 57: Visualizing multivariate data using lattice and direct labels

Group data by car class

> direct.label(xyplot(jitter(cty) ~ jitter(hwy),

+ mpg, aspect = 1, panel = panel.xyref,

+ groups = class))

jitter(hwy)

jitte

r(ct

y)

10

15

20

25

30

35

20 30 40

●●

● ●●

●●

● ●

● ● ●

●●●

● ●

●●●

●●

● ●

● ●

● ●

●●

● ●

●●

●●

●● ●●

●●

●●●

●●

●●

●●

●●

● ●●

●●

●●

●●

●●

●● ●

● ●●

●●

● ● ●●

● ●

●●

●●●

● ●

● ●

●●

● ●●

●●●

● ●

● ●

●●

● ●●

●●●

●●

●●

●●

●●

2seater

compact

midsize

minivan

pickup

subcompact

suv

Page 58: Visualizing multivariate data using lattice and direct labels

Compare direct labeling methods

> compare.methods(c("empty.grid", "empty.grid.2"),

+ xyplot, mpg, jitter(cty) ~ jitter(hwy),

+ class, aspect = 1, panel = panel.xyref,

+ horiz = TRUE)

empty.grid

jitter(hwy)

jitte

r(ct

y)

10

15

20

25

30

35

20 30 40

●●

●●

● ●●

●●

● ●

● ● ●

●● ●

● ●

●●

●●●

● ●●

● ●

● ●

●●

● ●

●●

●●

●●

●● ●●

●●

●●

●●●

●●

●●●●

● ●●

●●

●●

● ●

●●

●● ●

● ●●

●●

●● ●●●

●●

● ●

●●

●●●

● ●

● ●

●●

● ●●

●●●●

● ●●

● ●

●●● ●●

●●●

●●

●●

●●

2seater

compact

midsize

minivan

pickup

subcompact

suv

empty.grid.2

jitter(hwy)

jitte

r(ct

y)

10

15

20

25

30

35

20 30 40

●●

●●

● ●●

●●

●● ●

● ● ●

●● ●

● ●

●●

●●●

●●

● ●

●●●

● ●

●●●

● ●

●●

●●

●●

●● ●●

●●

●●

●●

●●

●●●●

●●

● ●●

●●

●●

● ●

●●

●● ●

● ●●

●●

● ●●●

●●

● ●

●●

●●●

● ●

●●

● ●

●●●

● ●●

●●●

●●

● ●

●●● ●●

●●●

●●

●●

●●

2seater

compact

midsizeminivan

pickup

subcompact

suv

Page 59: Visualizing multivariate data using lattice and direct labels

References for learning more about lattice and latticedl

I First load the libraries in RI library(lattice)I library(latticeExtra)I library(latticedl)

I Then you can look at the interactive help pages

Overview ?LatticeCustomizing plots ?xyplotIncluded panel functions ?panel.functions, ?llinesMultiple plots per page ?plot.trellis, ?c.trellisDirect labeling ?direct.label

I Deepayan Sarkar (2008) Lattice: Multivariate Data Visualization with R,Springer.

I R code from the slides available on the web:http://directlabels.r-forge.r-project.org

I Email me directly: toby.hocking AT inria.fr