带刻面的渐变填充绘图面板
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 创建
我使用了以下条形图:
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 创建