gpt4 book ai didi

r - 低于平均值的列的条件色调

转载 作者:行者123 更新时间:2023-12-01 10:36:34 24 4
gpt4 key购买 nike

我想更改特定列的色调(如果低于平均值):

library(reshape2)
library(ggplot2)

dat <- read.table(text=" cars trucks suvs
1 2 4
3 5 4
6 4 6
4 5 6
9 12 16", header=TRUE, as.is=TRUE)
dat$day <- factor(c("Mo", "Tu", "We", "Th", "Fr"),
levels=c("Mo", "Tu", "We", "Th", "Fr"))

mdat <- melt(dat, id.vars="day")
head(mdat)
ggplot(mdat, aes(variable, value, fill=day)) +
geom_bar(stat="identity", position="dodge")+
geom_line(stat = "hline", yintercept = "mean", aes(colour = day, group=day), size=1.5, linetype="dashed")

例如:column cars/Friday 的颜色应该稍微浅一点,因为它低于平均值:

Plot

是否可以在 ggplot 中执行此操作?

最佳答案

您可以创建一个标识符变量来指示该值是否低于平均值。

mdat$below.mean <- ave(mdat$value, mdat$day, FUN = function(x) x > mean(x))

这会向数据集添加一个逻辑整数列,其中所有高于平均值的值都编码为 1,其他值编码为 0:

> mdat
day variable value below.mean
1 Mo cars 1 0
2 Tu cars 3 0
3 We cars 6 1
4 Th cars 4 0
5 Fr cars 9 0
6 Mo trucks 2 0
7 Tu trucks 5 1
8 We trucks 4 0
9 Th trucks 5 0
10 Fr trucks 12 0
11 Mo suvs 4 1
12 Tu suvs 4 0
13 We suvs 6 1
14 Th suvs 6 1
15 Fr suvs 16 1

现在您可以使用该变量通过 alpha 参数使低于均值的条形更亮:

ggplot(mdat, aes(variable, value, fill=day, alpha=factor(below.mean))) + 
geom_bar(stat="identity", position="dodge") +
scale_alpha_discrete(range = c(0.5,1)) +
guides(alpha=FALSE) + # this remove the 'alpha' legend
theme_minimal()

给出:

enter image description here

关于r - 低于平均值的列的条件色调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34368892/

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