тепловая карта ggplot2 цветовая шкала (scale_fill_gradient) - PullRequest
3 голосов
/ 13 октября 2011

Я пытаюсь построить тепловую карту с помощью 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

Ответы [ 2 ]

8 голосов
/ 13 октября 2011

У нас нет ваших 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 - это то, что вы ищете.Я использовал преувеличенные размеры, чтобы сделать его более очевидным.

Result of ggplot command

Подробнее о доступных опциях см. https://github.com/hadley/ggplot2/wiki/+opts%28%29-List

3 голосов
/ 05 ноября 2015

Я попробовал это и обнаружил, что 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)

...