Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Even though there is already an answer, perhaps this different method will be a good addition. With the code you can create a heatmap similar to the one below</p> <p><img src="https://i.stack.imgur.com/yqGLI.png" alt="Resulting SOM Heatmap for my Dummy SOM"></p> <p>I took this piece of code from a more extensive program I wrote around the kohonen package. You can find my full explanation of the program here: <a href="http://nbremer.blogspot.nl/2013/07/on-creation-of-extended-self-organizing.html" rel="noreferrer">http://nbremer.blogspot.nl/2013/07/on-creation-of-extended-self-organizing.html</a> </p> <p>It is a bit coding and you need to start with a specific kind of variable: the input <code>&lt;&lt;Heatmap matrix variable&gt;&gt;</code> is a matrix that would be the numerical representation of you heatmap. Here [1,1] will become the lower left node (1st row, 1st column), [1,2] will become the node to the right, [2,1] will be the first node to the left in the second row, etc. So visually you work your way from bottom left to top right in the Heatmap, while in the matrix you work from top left to bottom right</p> <pre><code>library(RColorBrewer) #to use brewer.pal library(fields) #to use designer.colors #Function to create the polygon for each hexagon Hexagon &lt;- function (x, y, unitcell = 1, col = col) { polygon(c(x, x, x + unitcell/2, x + unitcell, x + unitcell, x + unitcell/2), c(y + unitcell * 0.125, y + unitcell * 0.875, y + unitcell * 1.125, y + unitcell * 0.875, y + unitcell * 0.125, y - unitcell * 0.125), col = col, border=NA) }#function #Start with a matrix that would be the numerical representation of you heatmap #Here [1,1] will become the lower left node (1st row, 1st column), #[1,2] will become the node to the right #[2,1] will be the first node to the left in the second row #So visually you work your way from bottom left to top right x &lt;- as.vector(&lt;&lt;Heatmap matrix variable&gt;&gt;) #Number of rows and columns of your SOM SOM_Rows &lt;- dim(&lt;&lt;Heatmap matrix variable&gt;&gt;)[1] SOM_Columns &lt;- dim(&lt;&lt;Heatmap matrix variable&gt;&gt;)[2] #To make room for the legend par(mar = c(0.4, 2, 2, 7)) #Initiate the plot window but do show any axes or points on the plot plot(0, 0, type = "n", axes = FALSE, xlim=c(0, SOM_Columns), ylim=c(0, SOM_Rows), xlab="", ylab= "", asp=1) #Create the color palette #I use designer.colors to interpolate 50 colors between #the maxmimum number of allowed values in Brewer ColRamp &lt;- rev(designer.colors(n=50, col=brewer.pal(9, "Spectral"))) #Make a vector with length(ColRamp) number of bins between the minimum and #maximum value of x. #Next match each point from x with one of the colors in ColorRamp ColorCode &lt;- rep("#FFFFFF", length(x)) #default is all white Bins &lt;- seq(min(x, na.rm=T), max(x, na.rm=T), length=length(ColRamp)) for (i in 1:length(x)) if (!is.na(x[i])) ColorCode[i] &lt;- ColRamp[which.min(abs(Bins-x[i]))] #Actual plotting of hexagonal polygons on map offset &lt;- 0.5 #offset for the hexagons when moving up a row for (row in 1:SOM_Rows) { for (column in 0:(SOM_Columns - 1)) Hexagon(column + offset, row - 1, col = ColorCode[row + SOM_Rows * column]) offset &lt;- ifelse(offset, 0, 0.5) } #Add legend to the right if you want to image.plot(legend.only=TRUE, col=ColRamp, zlim=c(min(x, na.rm=T), max(x, na.rm=T))) </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload