Легенда ggplot с логами - PullRequest
1 голос
/ 16 октября 2019

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

Пример цветов легенды, которые мне бы хотелось:

library(data.table)
df = data.table(date=Sys.Date()+0:7,
                size=c(100,200,50,300,450,70,50,200),
                objective=c(1,2,2,2,5,2,3,1),
                actuals=c(0.8,2.5,2,2.2,4,1.8,15,0.2))
df[,deviation:=actuals/objective-1]
df[,log_deviation:=log(deviation+1)]

ggplot(df,aes(date,size,fill=log_deviation))+geom_bar(stat="identity")+
  scale_fill_gradient2(high = "tomato", low = "blue",mid = "seagreen1",labels = scales::percent)

enter image description here

И значения легенды, которые я хотел бы:

ggplot(df,aes(date,size,fill=deviation))+geom_bar(stat="identity")+
  scale_fill_gradient2(high = "tomato", low = "blue",mid = "seagreen1",labels = scales::percent)

enter image description here

Есть ли элегантный способ сделать это? Спасибо!

1 Ответ

2 голосов
/ 16 октября 2019

Вы можете определить преобразование в масштабе:

ggplot(df,aes(date,size,fill = deviation))+geom_bar(stat="identity")+
  scale_fill_gradient2(high = "tomato", low = "blue",
    mid = "seagreen1",labels = scales::percent, 
    trans = "log1p")

Если вам не нравятся разрывы по умолчанию, определите breaks в пределах шкалы.

...