gpt4 book ai didi

r - 使用ggplot基于条形之间差异的颜色

转载 作者:行者123 更新时间:2023-12-01 12:32:55 25 4
gpt4 key购买 nike

我已经进行了大量搜索,并正在尝试执行以下操作。我有一个条形图,每个值都有两个闪避条。每个条代表一个百分比。 (大致的样子,因为我还不能发布图片)

Feature |XXXXXXXXXXXXXX  %50
|XXXXXXXX %25

我想做的是,当百分比差异 > 15 时,将任一条的颜色更改为“红色”

这是我使用的数据:

Feature variable          value
A "Percent Done" 50
B "Planned" 25
A "Percent Done" 10
B "Planned" 80

代码:

p3 <- ggplot(plotdata, aes(x = Feature, y = value, fill = variable))
p3 <- p3 + geom_bar( position ="dodge", stat ="identity")+
coord_flip() + theme_minimal()

所以基本上,如果我们查看顶部的“模拟”。因为 2 个条之间的百分比大于 15%,所以我希望其中一个条是不同的颜色(第三种颜色),如下所示:

enter image description here

我考虑过使用 ifelse 来设置颜色,但我无法实现它。我的想法是使用 ifelse 返回我想要使用的颜色。所以“如果”2 个条之间的差异大于 15,则返回此颜色“否则”返回另一种颜色。有谁知道这是否可能?

最佳答案

您可以在调用 ggplot 之前创建填充颜色的向量。

## Sample data
dat <- data.frame(`Percent Done`=c(25,10,15),
Planned=c(50,80,20),
Feature=factor(c("A","B","C"), levels=c("C","B","A")))
library(reshape2)
dat <- melt(dat, id.vars = "Feature") # reshape the data to long format

## Get the fill colors
dat <- dat[order(dat$Feature, dat$variable, decreasing = T), ]
dat$fills <- ifelse(c(0, abs(diff(dat$value))) > 15, "red", "yellow")
dat$fills[c(T,F)] <- "black"

ggplot(dat, aes(Feature, value, group=variable, order=rev(variable))) +
geom_histogram(stat="identity", aes(fill=fills), position=position_dodge()) +
scale_fill_manual(values=c("black","red","yellow"), labels=c("Plan",">15%", "Within 15%")) +
coord_flip() +
theme_bw()

enter image description here您也可以使用 ggplot 调用中的隐藏变量来执行此操作,但这会比较棘手。

关于r - 使用ggplot基于条形之间差异的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922274/

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