[R] Labeling/identifying observations in plot after MclustDR from Mclust
Jim Lemon
jim at bitwrit.com.au
Tue Apr 22 05:30:33 CEST 2014
On 04/17/2014 01:01 PM, Mark Manger wrote:
> Hi,
>
> I’m trying to figure out how to label points in a contour plot produced from the output of MclustDR, the dimension reduction function in the Mclust package.
>
> The original data frame has row names
>
> RRcoarse govtDeficit res_gdp GrossFixedCapForm_UN fuelExports
> AUS_76 2.000 -4.5125520 1.5197260 26.5169 12.7851900
> AUS_81 3.500 -3.6041720 3.7029600 27.1058 20.8597300
> AUS_91 4.000 -1.2131010 3.8150380 24.1444 20.5832700
> AUS_01 4.000 0.0279132 4.4617860 26.9491 25.5349700
> AUT_76 2.000 -2.7850080 7.0378630 25.7365 1.6797000
> AUT_81 1.000 -3.4403770 6.4757080 23.2928 1.4688700
>
> I then use these variables to
>
> imbalances.selections.def = subset(imbalances.all, select=c(5:8,10:12), cu_gdp< 0)
> clusters.defs = Mclust(imbalances.selections.def, G=1:10)
>
>
> I use MclustDR to reduce the dimensions to plot the results, which works beautifully and produces a nice contour plot.
>
> dr.defs = MclustDR(clusters.defs)
> plot(dr.defs, what="contour”)
>
> But the plot is not particularly informative unless I know which observation is which.
>
> How can I label the points displayed in the plot to identify the observations? I can probably extract this from the dr.defs object whose str() is below, but I don’t know how to do that, or somehow from the original data frame row names. Help would be greatly appreciated. I know this is trivial in a regular plot(x,y) situation.
>
> str(dr.defs)
>
> List of 22
> $ call : language MclustDR(object = clusters.defs)
> $ type : chr "Mclust"
> $ x : num [1:49, 1:7] 2 3.5 4 4 2 1 1 2 2 2 ...
> ..- attr(*, "dimnames")=List of 2
> .. ..$ : chr [1:49] "AUS_76" "AUS_81" "AUS_91" "AUS_01" ...
> .. ..$ : chr [1:7] "RRcoarse" "govtDeficit" "res_gdp" "GrossFixedCapForm_UN" ...
> $ Sigma : num [1:7, 1:7] 0.875 0.116 -0.781 -0.525 2.339 ...
> ..- attr(*, "dimnames")=List of 2
> .. ..$ : chr [1:7] "RRcoarse" "govtDeficit" "res_gdp" "GrossFixedCapForm_UN" …
> etc etc etc
>
Hi Mark,
I didn't see an answer to your question, but you might find the
boxed.labels function (plotrix) helpful. I think your labels can be
obtained using:
mylabels<-rownames(dr.defs$x)
and by calling:
boxed.labels(x,y,mylabels)
where x and y are the coordinates of the points you want to label, you
will get the labels placed at the points. I suggest boxed.labels because
the labels will have a little box around them and a background that
prevents the underlying image from obscuring them.
Jim
More information about the R-help
mailing list