这个问题来自另一个问题:Different coloring of groups in R plot
我想学习改变一种几何图形的色调而不影响另一种几何图形。因此,这里的箱线图分组和点分组映射到同一变量。改变一个的色调会改变另一个。我该如何更改盒填充而不是点填充的色相;换句话说,使点填充的颜色更浅,以便与框填充的相同颜色脱颖而出?
#数据
library(RColorBrewer)
library(reshape2)
a=rnorm(100, mean=1)
b=rnorm(100, mean=0, sd=1)
ab=data.frame(a,b)
melt=melt(ab)
bpColor=brewer.pal(4, 'RdBu')
#当前
ggplot(melt, aes(fill=variable, x=variable, y=value)) +
geom_boxplot(notch = TRUE) +
geom_jitter(position = position_jitter(width = .05, height =0), shape=21, size=1.5) +
scale_fill_hue(l=40)
最佳答案
创建箱形图和色相较浅的点图,然后将点覆盖在框上可能会更简单。借用this post的想法,让我举例说明:
library(ggplot2)
library(RColorBrewer)
library(reshape2)
library(gridExtra)
library(gtable)
# make up data
a=rnorm(100, mean=1)
b=rnorm(100, mean=0, sd=1)
ab=data.frame(a,b)
melt=melt(ab)
bpColor=brewer.pal(4, 'RdBu')
## create a boxplot
g1 <- ggplot(melt, aes(fill=variable, x=variable, y=value)) +
geom_boxplot(notch = TRUE) +
scale_fill_hue(l=40) +
theme_bw()
## create a pointplot with a lighter hue
g2 <- ggplot(melt, aes(fill=variable, x=variable, y=value)) +
geom_jitter(position = position_jitter(width = .05, height =0), shape=21, size=3) +
scale_fill_hue(l=100) +
theme(panel.background = element_rect(fill = NA))
gt_boxes <- ggplot_gtable(ggplot_build(g1))
gt_points <- ggplot_gtable(ggplot_build(g2))
## overlay the points over the boxes
just_boxes <- c(subset(gt_boxes$layout, name == "panel", se = t:r))
g_together <- gtable_add_grob(gt_boxes, gt_points$grobs[[which(gt_points$layout$name == "panel")]],
just_boxes$t, just_boxes$l, just_boxes$b, just_boxes$l)
grid.draw(g_together)
关于r - ggplot:覆盖相同分组的2个几何图形的色相不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22921923/