Легенда тепловой карты ggplot не представляет отрицательные числа - PullRequest
3 голосов
/ 24 сентября 2011

Я пытаюсь создать тепловую карту для набора данных, который содержит отрицательные числа:

Ne      BR         Error  
10000   0.00001    1.62  
10000   0.000001  -1.03  
10000   0.0000001 -0.124  
100000  0.00001   36.73  
100000  0.000001   5.86  
100000  0.0000001 -0.79  
1000000 0.00001   -8.335  
1000000 0.000001  39.465  
1000000 0.0000001  2.59  

Я использовал этот код:

library(ggplot2)  
data = read.csv('full_path')  
(p <- ggplot(data[1:9,], aes(Ne, BR)) +
  geom_tile(aes(fill=Error), colour="white") + 
  scale_fill_gradient(low="white", high="black") + scale_x_log('Ne') +    
  scale_y_log('Birth Rate') + opts(axis.ticks = theme_blank()))  

Это приводит к штрафутепловая карта, но легенда не учитывает отрицательные числа.Цвета, как представляется, правильно отражают отрицательные значения, но легенда останавливается на нуле, который является светло-серым.Как я могу извлечь из этого легенду, которая охватывает весь диапазон данных в столбце «Ошибка» моего фрейма данных?

1 Ответ

7 голосов
/ 24 сентября 2011

Попробуйте:

ggplot(dat, aes(Ne, BR)) +
  geom_tile(aes(fill=Error), colour="white") + 
  scale_fill_gradient(low="white", high="black",breaks = seq(min(dat$Error),max(dat$Error),length.out = 5)) + scale_x_log('Ne') +    
  scale_y_log('Birth Rate') + opts(axis.ticks = theme_blank()) 

ggplot просто пытается выбрать для вас «хорошие» разрывы в масштабе, аналогично тому, как выбираются отметки на осях.(Я изменил имя вашего фрейма данных на dat, так как data - это часто используемая функция в R. Это не так уж сложно, но позволяет избежать путаницы.)

enter image description here

...