R heatmap con paleta de colores divergentes

Estoy tratando de crear un mapa de calor simple en R, usando una paleta de colores divergentes. Quiero usar un degradado para que todos los números por debajo de un umbral N se designen como un color (por ejemplo, púrpura), y todos los números por encima del umbral se designen por otro color (por ejemplo, naranja). Cuanto más lejos esté el número del umbral, más oscuro debe ser el color.

Aquí hay un conjunto de datos de muestra:

Division,COL1,COL2,COL3,COL4,COL5,COL6,COL7
Division 1,31.9221884012222,75.8181694429368,97.0480443444103,96.295954938978,70.5677134916186,63.0451830103993,93.0396212730557
Division 2,85.7012346852571,29.0621076244861,16.9130333233625,94.6443660184741,19.9103083927184,61.9562198873609,72.3791105207056
Division 3,47.1665125340223,99.4153356179595,8.51091076619923,79.1276383213699,41.915355855599,7.45079894550145,24.6946100145578
Division 4,66.0743870772421,24.6163331903517,78.694460215047,42.04714265652,50.2694897353649,73.0409651994705,87.3745442833751
Division 5,29.6664374880493,35.4036891367286,19.2967326845974,5.48460693098605,32.4517334811389,15.5926876701415,76.0523204226047
Division 6,95.4969164915383,8.63230894319713,61.7535551078618,24.5590241160244,25.5453423131257,56.397921172902,44.4693325087428
Division 7,87.5015622004867,28.7770316936076,56.5095080062747,34.6680747810751,28.1923673115671,65.0204187724739,13.795713102445
Division 8,70.1077231671661,72.4712177179754,38.4903231170028,36.1821102909744,97.0875509083271,17.184783378616,78.2292529474944
Division 9,47.3570406902581,90.2257485780865,65.6037972308695,77.0234781783074,25.6294377148151,84.900529962033,82.5080851092935
Division 10,58.0811711959541,0.493217632174492,58.5604055318981,53.5780876874924,9.12552657537162,20.313960686326,78.1371118500829
Division 11,34.6708688884974,76.711881859228,22.6064443588257,22.1724311355501,5.48891355283558,79.1159523651004,56.8405059166253
Division 12,33.6812808644027,44.1363711375743,70.6362190190703,3.78900407813489,16.6075889021158,9.12654218263924,39.9711143691093

Aquí hay un fragmento simple para producir un mapa de calor a partir de los datos anteriores.

data <- read.csv("dataset.csv", sep=",")
row.names(data) <- data$Division
data <- data[,2:7]
data_matrix <- data.matrix(data) 
heatmap(data_matrix, Rowv=NA, Colv=NA, col = heat.colors(256), scale="column", margins=c(5,10))

¿Cómo puedo modificar el código anterior para producir:

un degradado de color (naranja) para todos los números por encima de 50 (más oscuro cuanto más lejos esté el número de 50)un degradado de color (púrpura) para todos los números ABAJO 50 (más oscuro cuanto más lejos esté el número de 50)Es agradable tener (pero opcional) escribir el valor del número en la celda de la cuadrículaEs agradable tener (pero opcional), use un color diferente para la celda de la cuadrícula que es EXACTAMENTE el número de umbral (50 en este caso)

[[Editar]]

Acabo de ver estopregunta sobre SO, que parece ser muy similar. La respuesta utiliza ggplot (del cual no tengo experiencia), y hasta ahora no he podido adaptar la solución ggplot a mis datos un poco más complicados.

Respuestas a la pregunta(2)

Su respuesta a la pregunta