gpt4 book ai didi

r - 在 R 中使用 ggplot 更改图例的一部分?

转载 作者:行者123 更新时间:2023-12-02 18:16:08 25 4
gpt4 key购买 nike

我正在尝试使用 ggplot 更改显示的图例的一部分。例如,如果我有一些数据并创建如下图:

library(ggplot2)
dat <- data.frame(
nam = c('a','b','c','d','e','f','g','h','i'),
val = c(2,5,1,6,8,3,9,10,8)
)

col1 <- setNames(scales::hue_pal(c(0, 360) + 15, 100, 64, 0, 1)(length(dat$nam[1:5])), dat$nam[1:5])
col2 <- setNames(rep('#e6e6e6', length(dat$nam[6:9])), dat$nam[6:9])
colFinal <- unname(c(col1, col2))

ggplot(dat, aes(x = nam, y = val, fill= nam )) +
geom_bar(stat = 'identity') +
scale_fill_manual(values = colFinal, name = 'name') +
theme_bw()

这创建了这个情节:example barplot

如您所见,fi 的颜色都是相同的灰色。我想知道是否可以通过“合并”fi 来更改图例,以仅显示这些值的单个图例条目。例如,我正在尝试做这样的事情:

expected output

但需要注意的是,我试图通过改变情节本身来做到这一点。我不可能返回并更改数据框。我在想也许这可以通过使用 ggplot_build 来实现,但我不确定!?

关于如何做到这一点有什么建议吗?

最佳答案

一种选择是通过操作ggplot对象来手动设置填充比例的breakslabels:

library(ggplot2)
dat <- data.frame(
nam = c('a','b','c','d','e','f','g','h','i'),
val = c(2,5,1,6,8,3,9,10,8)
)

col1 <- setNames(scales::hue_pal(c(0, 360) + 15, 100, 64, 0, 1)(length(dat$nam[1:5])), dat$nam[1:5])
col2 <- setNames(rep('#e6e6e6', length(dat$nam[6:9])), dat$nam[6:9])
colFinal <- unname(c(col1, col2))

p <- ggplot(dat, aes(x = nam, y = val, fill= nam )) +
geom_bar(stat = 'identity') +
scale_fill_manual(values = colFinal, name = 'name') +
theme_bw()

p$scales$scales[[1]]$breaks <- letters[1:6]
p$scales$scales[[1]]$labels <- c(letters[1:5], "Others")
p

关于r - 在 R 中使用 ggplot 更改图例的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71565934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com