gpt4 book ai didi

r - 如何在 R 中匹配多个 ggplot2 图中的调色板?

转载 作者:行者123 更新时间:2023-12-02 15:50:03 26 4
gpt4 key购买 nike

自从提出这个问题以来已经有一段时间了,但我知道我很快就会提取新数据,我想弄清楚如何用这种技术来绘制它。看起来评论和答案中的人知道如何做到这一点,但我无法完全弄清楚所给我的内容。还有人想尝试一下吗?

我正在尝试使用具有多个级别的因子变量绘制多个条形图。

首先,我生成一个 data.frame 并创建一个因子,并按数值降序排列(以便绘图将从最高移动到最低)。然后,我想生成一个 ggplot2 对象,在本例中可以是 gg1。这将自动为每个级别分配颜色并构建条形图。然后我创建了 gg2,它本质上是相同的,但顺序不同。但是,ggplot2 根据 val 的值自动分配颜色。我需要将颜色映射到字符串 name ,以便可以在多个 ggplot 对象中重复使用。

简而言之,问题在于,在下面的示例中,只有轴刻度线值发生变化,而不是颜色。我尝试使用方法 here无济于事。有什么想法吗?

library(ggplot2)
test1 <- data.frame(name = c('a', 'b', 'c'),
val = 1:3)
test1$name <- factor(test1$name,
levels = as.character(test1$name[order(-test1$val)]))
gg1 <- ggplot(data = test1) + geom_bar(aes(x = name, y = val, fill = val))
gg1
test2 <- data.frame(name = c('a', 'b', 'c'),
val = c(3, 1, 2))
test2$name <- factor(test2$name,
levels = as.character(test2$name[order(-test2$val)]))
gg2 <- ggplot(data = test2) + geom_bar(aes(x = name, y = val, fill = val))
gg2

这就是我尝试合并链接解决方案中建议的方法的方法:

g <- ggplot_build(gg1)
myPalette <- unique(g$data[[1]]["fill"])[, 1]
gg3 <- ggplot(data = test2) + geom_bar(aes(x = name, y = val, fill = val)) +
scale_fill_manual(values = myPalette)
gg3

最佳答案

试试这个

test2 <- data.frame(name = c('a', 'b', 'c'),
val = c(3, 1, 2,3,2,1,1,2,3))

向填充值添加标签

test2$val <- factor(test2$val,
levels = c(1,2,3),
labels = c("One", "Two","Three"))
ggplot(data = test2) + geom_bar(aes(x = name,fill=val)) +
scale_fill_manual(values = c('One' = "red", 'Two' = "orange", 'Three' = "blue"))

关于r - 如何在 R 中匹配多个 ggplot2 图中的调色板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625027/

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