R ggpattern自定义图例

3

我无法使用ggplot/ggpattern自定义图例。

  1. "SPEED"图例不应显示任何图案(仅显示3种颜色)
  2. "TYPE"图例应使用自定义文本代替0和1

谢谢!

代码:

remotes::install_github("coolbutuseless/ggpattern")
library(ggplot2)
library(ggpattern)

list <- c("1" = "circle", "0" = "none")
ggplot(tt) +
  aes(x = SOUND, y = R, fill = SPEED, pattern = TYPE) +
  geom_boxplot_pattern(pattern_fill = "white",
                       pattern_density = 0.6,
                       pattern_spacing = 0.012,
                       outlier.size = 1) +
  scale_pattern_manual(values = list)  +
  scale_fill_brewer(palette = "Set1") +
  labs(y = "R", title = "R") +
  ylim(0,100) +
  theme_minimal()

数据样本:

structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 34L, 34L, 34L, 34L, 34L, 
34L, 34L, 34L, 34L, 35L, 35L, 35L, 35L, 35L, 35L, 35L, 35L, 35L, 
35L, 35L, 35L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 
36L, 36L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 
37L, 38L, 38L, 38L, 38L, 38L, 38L), .Label = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", 
"27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", 
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47"), class = "factor"), 
    TYPE = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("0", "1"), class = "factor"), SPEED = structure(c(1L, 
    1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 
    2L, 2L, 3L, 3L, 3L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 
    3L, 3L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 
    2L, 3L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 2L, 3L, 1L, 1L, 
    1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 
    2L, 3L, 3L, 3L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 
    3L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("1", 
    "2", "3"), class = "factor"), SOUND = structure(c(1L, 2L, 
    3L, 1L, 2L, 3L, 1L, 2L, 3L, 4L, 4L, 4L, 1L, 2L, 3L, 1L, 2L, 
    3L, 1L, 2L, 3L, 4L, 4L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
    3L, 4L, 4L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 4L, 4L, 
    4L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 4L, 4L, 4L, 1L, 2L, 3L, 
    1L, 2L, 3L, 1L, 2L, 3L, 4L, 4L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 
    1L, 2L, 3L, 4L, 4L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
    4L, 4L, 4L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("1", "2", 
    "3", "4"), class = "factor"), R = c(64, 77, 32, 75, 80, 38, 
    79, 57, 17, 54, 54, 50, 52, 58, 34, 30, 46, 0, 63, 51, 1, 
    18, 55, 18, 76, 77, 26, 60, 17, 0, 68, 62, 0, 1, 64, 43, 
    71, 37, 38, 53, 59, 20, 67, 55, 37, 43, 61, 58, 81, 73, 62, 
    54, 36, 51, 57, 27, 55, 49, 56, 75, 92, 62, 92, 92, 62, 87, 
    92, 62, 89, 92, 92, 92, 60, 36, 73, 14, 62, 76, 55, 45, 78, 
    68, 18, 92, 85, 38, 92, 86, 43, 87, 66, 40, 81, 71, 81, 36, 
    92, 22, 92, 82, 42)), row.names = c(NA, -101L), class = c("tbl_df", 
"tbl", "data.frame"))

enter image description here

这个编辑器要求我添加更多的文字,因为我的帖子大部分都是代码,但我没有太多其他的东西可以添加。实际上,大部分代码只是示例数据,我不知道如何产生其他数据(我尝试了几个R默认集合,但它们都没有成功)。

1个回答

5
您可以通过传递一个向量到标签参数labels来在相关的scale_*_*()函数中更改图例键标签。
要更改图例而不更改图表,通常需要在guide_legend()中使用override.aes。以下是一个示例,在scale_pattern_manual()内使用它,并通过将其设置为“none”来覆盖pattern美学。
ggplot(tt) +
    aes(x = SOUND, y = R, fill = SPEED, pattern = TYPE) +
    geom_boxplot_pattern(pattern_fill = "white",
                         pattern_density = 0.6,
                         pattern_spacing = 0.012,
                         outlier.size = 1) +
    scale_pattern_manual(values = list, 
                         labels = c("Text1", "Text2"))  +
    scale_fill_brewer(palette = "Set1", 
                      guide = guide_legend(override.aes = list(pattern = "none"))) +
    labs(y = "R", title = "R") +
    ylim(0,100) +
    theme_minimal()

reprex 包 (v2.0.0) 创建于 2021-07-02


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接