【问题标题】:scale_fill_manual does not add any legend to my facet barplotscale_fill_manual 没有向我的 facet barplot 添加任何图例
【发布时间】:2023-03-18 14:05:02
【问题描述】:

我正在创建一个具有不同颜色代表不同值范围的构面条形图。我想在图表中添加一个图例以显示范围及其相应的颜色,但 scale_fill_manual 不起作用。如何纠正这个问题?非常感谢您的帮助。

代码如下:

set.seed(123)
n= 15*24 + 3
dt <- data.table(t=1:n)
dt[, y := abs(sin(2*pi*t/25.4)) + rnorm(n,1,0.2)]

dt[,t_in_day := t%%24]
dt[,day := floor(t/24)]
dt2 <- copy(dt)
dt2[,day := day-1]

dt2[,t_in_day := t_in_day + 24]
dt <- dt[day<max(day)]
dd <- rbind(dt, dt2)
dd <- dd[day>-1]

dd[, day_str := sprintf("day\n%03d",(day+1))]

col1<-c()

break1=10
rbPal <- colorRampPalette(c('red','yellow'))
col1 <- rbPal(break1)[as.numeric(cut(dd[,y],breaks = break1))]

cuts<-levels(cut(dd[,y],breaks = break1))
cuts<-gsub(","," - ",cuts)
cuts<-gsub("\\(","[",cuts)

ggplot(dd,aes(x=t_in_day,y=dd[,y]),fill=cuts) +
geom_bar(stat="identity",fill=col1) + 
facet_grid(day_str ~ .) + scale_x_continuous(name="time (h)",breaks = 0:8 * 6)+
scale_y_continuous(name="y")+
scale_fill_manual(values=rbPal(break1),labels=cuts)

【问题讨论】:

标签: r


【解决方案1】:

确保fill 出现在aes 函数中。试试

ggplot(dd,aes(x=t_in_day,y=dd[,y],fill=cuts)) + 
  ...

【讨论】:

  • 我想通了。将 geom_bar(stat="identity",fill=col1) 更改为 geom_bar(stat="identity",aes(fill=col1)) 会有所帮助。非常感谢。 :-)
猜你喜欢
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
相关资源
最近更新 更多