我正在尝试手动为ggplot2::ggplot()
箱线图指定颜色。使用ggplot2::geom_rect()
函数,我知道如何手动为框指定颜色,我还知道如何手动为其他类型的图(如散点图)的背景中的阴影区域指定颜色。我不知道如何为箱线图的背景中的阴影区域手动分配颜色(当我尝试这样做时,它似乎会自动将颜色分配给盒子,而不是我想要着色的背景区域),我也不知道如何同时手动将颜色分配给盒子和背景中的阴影区域。
这是一些捏造的数据
Data_Frame <- data.frame(Group_1 = rep(rep(letters[1:2], each = 5), 5), Group_2 = as.character(c(rep(1, 20), rep(2, 30))), Group_3 = rep(rep(LETTERS[1:5], each = 10), length.out = 50), Response_Variable = rnorm(50))
Group_1_Colors <- data.frame(Group_1 = letters[1:2], Group_1_Color = c('red4', 'blue4'))
Group_2_Colors <- data.frame(Group_2 = as.character(1:2), Group_2_Color = c('yellow1', 'purple1'))
Group_2_Colors$Minimum_Horizontal_Cutoff_Value <- c(-Inf, 2.5)
Group_2_Colors$Maximum_Horizontal_Cutoff_Value <- c(2.5, Inf)
Final_Data_Frame <- merge(Data_Frame, Group_2_Colors, by = 'Group_2', all = T)
Final_Data_Frame <- merge(Final_Data_Frame, Group_1_Colors, by = 'Group_1', all = T)
首先,我们要把包裹装上。
if (!require (ggplot2)) {
install.packages('ggplot2')
}
library(ggplot2)
这是一个图,我已经手动分配颜色的方块,我已经阴影区的背景下,另一个变量。
ggplot2::ggplot(Final_Data_Frame, ggplot2::aes(x = Group_3, y = Response_Variable, fill = Group_1)) +
ggplot2::geom_boxplot() +
ggplot2::scale_fill_manual(values = Group_1_Colors$Group_1_Color) +
ggplot2::geom_rect(ggplot2::aes(xmin = Minimum_Horizontal_Cutoff_Value, xmax = Maximum_Horizontal_Cutoff_Value, ymin = -Inf, ymax = Inf), alpha = 0.009)
当我第二次尝试使用'ggplot 2::geom_rect()'函数手动为背景中的阴影区域着色时,它会覆盖先前分配给框的颜色,并使用这些颜色为框着色。
ggplot2::ggplot(Final_Data_Frame, ggplot2::aes(x = Group_3, y = Response_Variable, fill = Group_1)) +
ggplot2::geom_boxplot() +
ggplot2::scale_fill_manual(values = Group_1_Colors$Group_1_Color) +
ggplot2::geom_rect(ggplot2::aes(xmin = Minimum_Horizontal_Cutoff_Value, xmax = Maximum_Horizontal_Cutoff_Value, ymin = -Inf, ymax = Inf), alpha = 0.009) +
ggplot2::scale_fill_manual(values = Group_2_Colors$Group_2_Color)
有什么解决办法吗?This question看起来会有帮助,但我还是想不通。即使我在前一句中链接到的问题有所帮助,我也不认为可以将图例分为两组,Group_2
和Group_3
,这是我希望手动着色的两个单独的组;我也想打破这两个团体的传说。
谢谢你,谢谢
1条答案
按热度按时间u0njafvf1#
您可以使用
ggnewscale
包轻松获得矩形的单独图例,该包允许为相同的美学提供多个比例和图例。注意:还请注意,恕我直言,使用一个单独的数据框作为背景矩形会更容易。将所有信息放在一个数据框中会产生一个副作用,即您正在绘制多个矩形,这也是您必须设置一个非常小的
alpha
值的原因。