我想用2种 colored颜色 填充盒子图,而不是1/ggplot(),使用geom_boxplot().

例如,第一种 colored颜色 介于框图宽度的0%和80%之间,第二种 colored颜色 介于框图宽度的80%和100%之间.

我找不到其他的例子,这样的图与geom_boxplot,所以我不知道这是可行的.

我想避免使用geom_rect()annotate().

Reproducible example

##### Initiating objects
### Colors
colFill <- c("#4a7ff9", "#4aecf9")
colShader <- c("#4964a3", "#499ba2")

### Dataset
set.seed(1)
df <- data.frame(Values=rnorm(100, 100, 10), 
                 Group=rep(c("Blue", "Cyan"), each=50))

##### Display plot
ggplot(df, aes(y=Values, x=Group, fill=Group)) + 
  geom_boxplot(lwd=3, width=0.5) + 
  scale_fill_manual(values=colFill) + 
  theme_classic() + 
  theme(legend.position="none")

enter image description here

My aim

enter image description here

谢谢你

推荐答案

这里有一个只用geom_boxplot就能做到这一点的方法.我们使用三个层:第一层只是主填充 colored颜色 ,没有线条.第二个是一个细长的方框图,用阴影 colored颜色 填充,没有线条或异常值,向右轻推.第三个是只显示线条的框图.这避免了使用注释或Grob黑客的需要.

ggplot(df, aes(y = Values, x = Group, fill = Group)) + 
  geom_boxplot(lwd = 0, width = 0.5) + 
  geom_boxplot(position = position_nudge(0.2), width = 0.1,
               lwd = 0, aes(fill = paste(Group, 2)), outlier.shape = NA) +
  geom_boxplot(lwd = 3, width = 0.5, fill = NA) + 
  scale_fill_manual(values = c(colFill, colShader)[c(1, 3, 2, 4)], 
                    guide = 'none') + 
  theme_classic() 

enter image description here

R相关问答推荐

使用rlang s arg_match判断函数输入列表

如何删除多个.CSV文件的行

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

将非重复序列高效转换为长格式

用相同方法得到不同函数的ROC最优截断值

用值序列对行进行子集化,并标识序列开始的列

将数据集中的值增加到当前包含的最大值

在R中无法读入具有Readxl和lApply的数据集

使用R中的正则表达式将一列分割为多列

如何将Which()函数用于管道%>;%

如何在PDF格式的kableExtra表格中显示管道字符?

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

有没有办法将不等长的列表转换为R中的数据帧

在r中整理图例和堆叠图的问题

使用其他DF中的文件名将列表中的每个元素保存到文件中

基于R中的引用将向量值替换为数据框列的值

有没有办法更改ggplot2中第二个y轴的比例限制?

如何为包创建自定义roxygen2标签?

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错

根据部分名称匹配获取多组列的行求和