изменение цвета тепловой карты ggplot2 (scale_fill_gradient)

#r #ggplot2 #heatmap

#r #ggplot2 #тепловая карта

Вопрос:

Я пытаюсь построить тепловую карту с помощью ggplot2, и я хотел бы изменить размер цветовой панели и увеличить шрифт.

Вот соответствующая часть кода:

 g <- ggplot(data=melt.m)
g2 <- g geom_rect(aes(xmin=colInd-1, xmax=colInd, 
  ymin=rowInd-1, ymax=rowInd, fill=value))

g2 <- g2 scale_x_continuous('beta', breaks=c(1, ceiling(cols/2), rows)-0.5, 
  labels=c(1,ceiling(cols/2), rows))
g2 <- g2 scale_y_continuous('alpha', breaks=c(1, ceiling(rows/2), rows)-0.5, 
  labels=c(1, ceiling(rows/2), rows))

g2 <- g2 opts(panel.grid.minor=theme_line(colour=NA),
  panel.grid.major=theme_line(colour=NA),
  panel.background=theme_rect(fill=NA, colour=NA), 
  axis.text.x=theme_text(size=30),
  axis.text.y=theme_text(size=30, angle=90), 
  axis.title.x=theme_text(size=30),
  axis.title.y=theme_text(size=30, angle=90), title = title)

heatscale <- c(low='ghostwhite', high='steelblue')

g2 <- g2 scale_fill_gradient("", heatscale[1], heatscale[2], bias = 10)
  

Работает нормально, проблема в том, что цветовая легенда с правой стороны слишком мала. Есть ли способ увеличить цветовую легенду и увеличить размер шрифта легенды?

Спасибо,

kz

Ответ №1:

У нас нет ваших melt.m данных, поэтому приведенный вами код невозможно воспроизвести. Используя diamonds набор данных, который поставляется с ggplot2 , в качестве примера, хотя:

 ggplot(diamonds, aes(x=table, y=price))  
  geom_bin2d()  
  scale_fill_gradient("", 'ghostwhite', 'steelblue', bias=10)  
  opts(legend.key.width=unit(1, "in"),
       legend.text = theme_text(size=30))
  

legend.key.width и legend.text — это то, что вы ищете. Я использовал преувеличенные размеры, чтобы сделать это более очевидным.

Результат выполнения команды ggplot

Для получения более подробной информации о доступных параметрах см.https://github.com/hadley/ggplot2/wiki/ opts()-List

Ответ №2:

Я попробовал это и обнаружил, что R или ggplot2 изменились за последние четыре года. Это привело к ошибке:

 Error: 'opts' is deprecated. Use 'theme' instead. (Defunct; last used in version 0.9.1)
  

Удалось заставить его работать со следующим вместо:

 p   theme(legend.text = element_text(size=30),legend.key.size = unit(1, "in"))
  

Изначально пытался просто изменить размер текста, но пришлось изменить размер ключа вместе с ним, иначе он станет нечитаемым. Кроме того, unit требуется библиотека, явно загруженная с library(grid)