这个问题来自另一个问题: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/

10-12 23:18