[R] Visualising SOM as hexagonal heatmaps

Adam Szałucha adam.szalucha at gmail.com
Tue Aug 20 10:18:33 CEST 2013


I have a kohonen object generated with grid parameters grid =
somgrid(20, 20, "hexagonal"). Standard plot shows the codebook vectors
for all variables. I want to have a hexagonal heatmap for each
variable.

I found in Applied Spatial Data Analysis with R code to generate hexagonal grid.

library("sp")
data(meuse.grid)
gridded(meuse.grid) = ~x + y
HexPts <- spsample(meuse.grid, type = "hexagonal", cellsize = 200)
spplot(meuse.grid["dist"], sp.layout = list("sp.points", HexPts, col = 1))
HexPols <- HexPoints2SpatialPolygons(HexPts)
df <- as.data.frame(meuse.grid)[overlay(meuse.grid, HexPts),]
HexPolsDf <- SpatialPolygonsDataFrame(HexPols, df, match.ID = FALSE)
spplot(HexPolsDf["dist"])

And modified it to work with my kohonen object.

gridgminy=gminy.som$grid$pts
gridgminy=data.frame(gridgminy)
gridgminy=cbind(gridgminy,gminy.som$codes)
gridded(gridgminy) = ~x + y
gxx <- spsample(gridgminy, type = "hexagonal", cellsize = 0.99)
HexPolsGminy <- HexPoints2SpatialPolygons(gxx)
dfGminy <- as.data.frame(gridgminy)[overlay(gridgminy, gxx),]
HexPolsDfGminy <- SpatialPolygonsDataFrame(HexPolsGminy, dfGminy,
match.ID = FALSE)
spplot(HexPolsDfGminy["NGO"])


But there are some problems. Firstly the line
gxx <- spsample(gridgminy, type = "hexagonal", cellsize = 0.99)
works randomly. Sometimes it works good and I have full grid
https://dl.dropboxusercontent.com/u/4723921/Screenshots/zupb.png
sometimes it generates grid partly like that
http://dl.dropbox.com/u/4723921/Screenshots/mc3e.png
or like that
http://dl.dropbox.com/u/4723921/Screenshots/6lbh.png
Why does it happen?

Secondly what is the parameter cellsize mean? Is it hexagon area or is
it hexagon side?

Thirdly is there any tool to make selected sides bolder, to mark the clusters?

Thanks
Adam Szałucha



More information about the R-help mailing list