带刻面的渐变填充绘图面板

Gradient filled plot panels with facet

我使用了以下条形图:

ggplot(yearplot,aes(x=reorder(vE,release.year), y=difference,fill=PAR,label=signif.))  + 
  geom_bar(stat='identity',position = "dodge",  size=3 ,alpha=1)  +
  geom_text(aes(x = vE, y = difference+0.03 , label = format(signif., nsmall = 0, scientific = FALSE)), 
  color="black",size=6) +
  xlab("Genotypen")+
  ylab("Differenz")+
  theme_bw()+
  ylim(-0.2,0.2)+
  facet_wrap(~number,labeller = labeller(number=date.wrap),nrow=1)+
  coord_flip()+
  scale_fill_gradient2(name="PAR \n[mol/m² s]",low="darkblue",mid = "orange1",high = "orangered4",limits=c(1200, 2100),midpoint = 1200)+
  theme(legend.position="top")+
  theme(legend.key.size = unit(3,"line"),
        legend.title = element_text(size = 16,face="bold"),
        legend.text = element_text(size = 14))+
  theme(axis.text=element_text(size=14,face="bold"),
        axis.title=element_text(size=16,face="bold"),
        strip.text = element_text(size=16,face="bold"))

我想将温度值添加为渐变填充绘图面板,类似于 PAR 值。例如,6 月 1 日的绘图面板为浅绿色,6 月 6 日为深绿色,其余时间介于两者之间。在数据框中,每一天都有一个温度值。有没有可能做到这一点?

您的问题包含大量代码,但仍然无法重现。丢人现眼!这通常是一个有趣的问题。 虽然我个人认为 'less is more' 并且应该尽量不要在图表中放置太多信息,但这是一种解决方案。

  • 你想要填充绘图面板吗?在条形图下方制作大矩形。
  • 你想要两次填充?使用 ggnewscale

瞧!

library(tidyverse)
library(ggnewscale)

mtc <- tibble::rownames_to_column(mtcars, 'model')

rect_df <- data.frame(xmin = -Inf, xmax = +Inf, ymin = -Inf, ymax = +Inf, cyl = unique(mtc$cyl))

ggplot() +
  geom_rect(data = rect_df, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = cyl)) +
  facet_grid(~cyl) +
  scale_fill_gradient(low="lightgreen",high = "darkgreen") +
  ggnewscale::new_scale_fill() +
  geom_col(data = mtc, aes(x = model, y = gear, fill = disp)) +
  scale_fill_gradient2(low="darkblue",mid = "orange1",high = "orangered4",limits=c(min(mtc$disp),max(mtc$disp)),midpoint = mean(mtc$disp)) +
  coord_flip()

reprex package (v0.3.0)

于 2020-01-03 创建